pozitr0n/1C-Project-Automation-of-the-Company

New processing task.

Closed this issue · 5 comments

Client: Kalinkavichy KHP.
Objective: External processing for changing the movement on the registers.

Task

  1. Add the new measurement "ТипТранспорта" to the register "ЗерновыеДляСушки".
  2. Create the outside proccessing, which will add the new big data to this register without the re-conduct document.
  3. Correct the movings ONLY through the document "ПриемнаяКвитанция".

Solving-steps

  • Take the movings of the document
  • Rewrite the necessary document
  • Fill in the data the same other registers
  • Record the data
&НаСервере
Процедура ПерезаполнитьНаСервере()

//ТипТранспорта = ВыборТипа;
Если ВыборТипа.Пустая() Тогда
    Message("Ошибка!");
Иначе
    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗерновыеДляСушки.Период,
                   |    ЗерновыеДляСушки.Регистратор,
                   |    ЗерновыеДляСушки.Организация,
                   |    ЗерновыеДляСушки.Контрагент,
                   |    ЗерновыеДляСушки.Номенклатура,
                   |    ЗерновыеДляСушки.ХарактеристикаНоменклатуры,
                   |    ЗерновыеДляСушки.Серия,
                   |    ЗерновыеДляСушки.МестоХранения,
                   |    ЗерновыеДляСушки.ТипПоступленияЗерна,
                   |    ЗерновыеДляСушки.ДокументДвижения,
                   |    ЗерновыеДляСушки.Анализ,
                   |    ЗерновыеДляСушки.Количество,
                   |    &ПараметрТипТранспорта КАК ТипТранспорта
                   |ИЗ
                   |    РегистрНакопления.ЗерновыеДляСушки КАК ЗерновыеДляСушки
                   |ГДЕ
                   |    ЗерновыеДляСушки.Регистратор ССЫЛКА Документ.ПриемнаяКвитанцияЗерновые
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ЗерновыеДляСушки.Регистратор,
                   |    ЗерновыеДляСушки.Период,
                   |    ЗерновыеДляСушки.Организация,
                   |    ЗерновыеДляСушки.Контрагент,
                   |    ЗерновыеДляСушки.Номенклатура,
                   |    ЗерновыеДляСушки.ХарактеристикаНоменклатуры,
                   |    ЗерновыеДляСушки.Серия,
                   |    ЗерновыеДляСушки.МестоХранения,
                   |    ЗерновыеДляСушки.ТипПоступленияЗерна,
                   |    ЗерновыеДляСушки.ДокументДвижения,
                   |    ЗерновыеДляСушки.Анализ,
                   |    ЗерновыеДляСушки.Количество";
КонецЕсли;

Запрос.УстановитьПараметр("ПараметрТипТранспорта", ВыборТипа);

    Выборка = Запрос.Выполнить().Выбрать();
    Сообщить(Выборка.Количество());

    Пока Выборка.Следующий() Цикл

        //если нажать break - прервется не только цикл, но и весь поток кода.
        ОбработкаПрерыванияПользователя();

        ПровестиПоРегистру(Выборка.Регистратор);
    КонецЦикла;
КонецПроцедуры

Процедура ПровестиПоРегистру(ДокСсылка)

    НаборЗаписей = РегистрыНакопления.ЗерновыеДляСушки.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ДокСсылка);
    //НаборЗаписей.Записать();
КонецПроцедуры

Changing version.

&НаКлиенте
Процедура ОсновныеДействияФормыПерезаполнить(Кнопка)
    ПерезаполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПерезаполнитьНаСервере()

//ТипТранспорта = ВыборТипа;
Если ВыборТипа.Пустая() Тогда
    Возврат; 
КонецЕсли;

    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
                   |    ЗерновыеДляСушки.Регистратор
                   |ИЗ
                   |    РегистрНакопления.ЗерновыеДляСушки КАК ЗерновыеДляСушки
                   |ГДЕ
                   |    ЗерновыеДляСушки.Регистратор ССЫЛКА Документ.ПриемнаяКвитанцияЗерновые
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ЗерновыеДляСушки.Регистратор";


    Выборка = Запрос.Выполнить().Выбрать();
    Сообщить(Выборка.Количество());

    Пока Выборка.Следующий() Цикл

        //если нажать break - прервется не только цикл, но и весь поток кода.
        ОбработкаПрерыванияПользователя();

        ПровестиПоРегистру(Выборка.Регистратор);
    КонецЦикла;
КонецПроцедуры

Процедура ПровестиПоРегистру(ДокСсылка)

    НаборЗаписей = РегистрыНакопления.ЗерновыеДляСушки.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ДокСсылка);
    НаборЗаписей.Отбор.Регистратор.Использование = Истина;
    НаборЗаписей.Прочитать();

    Для Каждого ДокСсылка Из НаборЗаписей Цикл

    //НаборЗаписей.Записать();
КонецПроцедуры

Third version

&НаКлиенте
Процедура ОсновныеДействияФормыПерезаполнить(Кнопка)
    ПерезаполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПерезаполнитьНаСервере()

//ТипТранспорта = ВыборТипа;
Если ВыборТипа.Пустая() Тогда
    Возврат; 
КонецЕсли;

    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
                   |    ЗерновыеДляСушки.Регистратор
                   |ИЗ
                   |    РегистрНакопления.ЗерновыеДляСушки КАК ЗерновыеДляСушки
                   |ГДЕ
                   |    ЗерновыеДляСушки.Регистратор ССЫЛКА Документ.ПриемнаяКвитанцияЗерновые
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ЗерновыеДляСушки.Регистратор";


    Выборка = Запрос.Выполнить().Выбрать();
    Сообщить(Выборка.Количество());

    Пока Выборка.Следующий() Цикл

        //если нажать break - прервется не только цикл, но и весь поток кода.
        ОбработкаПрерыванияПользователя();

        ПровестиПоРегистру(Выборка.Регистратор);
    КонецЦикла;
КонецПроцедуры

Процедура ПровестиПоРегистру(ДокСсылка)

    НаборЗаписей = РегистрыНакопления.ЗерновыеДляСушки.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ДокСсылка);
    НаборЗаписей.Отбор.Регистратор.Использование = Истина;
    НаборЗаписей.Прочитать();

    Для Каждого Строка Из НаборЗаписей Цикл
        Строка.ТипТранспорта = НаборЗаписей.Отбор.Регистратор;
    КонецЦикла;

    НаборЗаписей.Записать();
КонецПроцедуры