Имя: Пароль:
1C
1С v8
Отладчик ругается!
0 discant
 
13.06.12
15:25
Вставляю в модуль формы Заказа на производство УПП следующий код

Процедура ПриЗаписи(Отказ)
//Разузлование заказов на производство
    // В ДеревоЗаказов вставляем № документа, если это 1-й док-т дерева,
    //т.е. ОсновнойЗаказНаПроизводство - не заполнено.
    Если НЕ ЗначениеЗаполнено(Номер) Тогда
        УстановитьНовыйНомер(ОсновнойЗаказНаПроизводство.Организация.Префикс);         
    КонецЕсли;    
    Если НЕ ЗначениеЗаполнено(ДеревоЗаказов) Тогда
        цц = "0123456789";
        ном = "";
        длинаНомера = СтрДлина(Номер);
        ии = длинаНомера;
        Пока ии > 0 Цикл
            Если Найти(цц,Сред(Номер,ии,1)) > 0 Тогда
                ном = Сред(Номер,ии,1) + ном;
            Иначе
                Прервать;
            КонецЕсли;    
            ии = ии - 1;
        КонецЦикла;    
        ном = Строка(Формат(Число(ном),"ЧГ=0"));
       
        Если НЕ ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство) Тогда
            //Вытаскиваем №
            ДеревоЗаказов = ном;
        Иначе
            Если ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство.ДеревоЗаказов) Тогда    
                ДеревоЗаказов = СокрЛП(ОсновнойЗаказНаПроизводство.ДеревоЗаказов) + "_" + ном;
            КонецЕсли;    
        КонецЕсли;    
    КонецЕсли;
КонецПроцедуры
При сохранении вылетает служебное сообщение "Ожидается ключевое слово КонецПроцедуры
Как это может быть, если процедура в общем-то закрыта?
1 Галахад
 
гуру
13.06.12
15:27
А другие процедуры закрыты?
2 andrewks
 
13.06.12
15:28
один КонецЕсли лишний
3 mikecool
 
13.06.12
15:28
кури
   Если НЕ ЗначениеЗаполнено(ДеревоЗаказов) Тогда
       цц = "0123456789";
       ном = "";
       длинаНомера = СтрДлина(Номер);
       ии = длинаНомера;

       Пока ии > 0 Цикл
4 mikecool
 
13.06.12
15:29
а самое главное, что ругается то не отладчик...
5 hhhh
 
13.06.12
15:30
(2) вроде на месте всё
6 mikecool
 
13.06.12
15:31
все упирается в (1)
7 andrewks
 
13.06.12
15:33
тогда (1)
8 discant
 
13.06.12
15:33
Т. е. этот код рабочий?
9 hhhh
 
13.06.12
15:36
(8) а точно одна эта ошибка выдается?
10 mikecool
 
13.06.12
15:40
(8) скопировав этот код в текстовый документ и сказав, что это код - я его смог отформатировать автоматом...
а вот насчет - рабочий или нет - тут я хз
11 spiteful41
 
13.06.12
15:43
В (0) ошибки нет, проблема где-то в другом месте
12 Aprobator
 
13.06.12
15:44
(0) Убери КонецЕсли - последний.
13 spiteful41
 
13.06.12
15:45
(12) тогда ошибка будет
14 Aprobator
 
13.06.12
15:45
+(12) а нет - вру вроде. Нормально отформатировать нельзя что ли?
15 spiteful41
 
13.06.12
15:46
(0) Дальше посмотри по модулю, ошибка в другом месте
16 sanja26
 
13.06.12
15:49
Законы программизма.

17. Самые мистические проблемы, широко раздуваемые и афишируемые, в конце концов оказываются твоими глупейшими ошибками.
18. Следствие - если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое.
19. Самое плохое ощущение для программиста - когда вокруг тебя стоят десять человек и все пытаются найти причину проблемы в твоей программе, а ты уже понял, в чём проблема, но боишься сказать, потому что это что-то вопиюще глупое...
17 Aprobator
 
13.06.12
15:49
Вот это пять конечно.

ном = Строка(Формат(Число(ном),"ЧГ=0"));


а вообще пробеги циклы и условия. Заремь их поштучно, чтобы определить с какого момента ругаться программа начинает.
18 Aprobator
 
13.06.12
15:53
(0) кстати, процедуру к событиям формы привязал?
19 discant
 
13.06.12
15:54
Ну закрываешь модуль, а он окно вываливает и снизу в служебных сообщениях выдает
{Документ.ЗаказНаПроизводство.Форма.ФормаДокумента.Форма(586,78)}: Ожидается ключевое слово 'Тогда' ('Then')
            Если ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство.ДеревоЗаказов)<<?>> Тогда     (Проверка: Толстый клиент (обычное приложение))
{Документ.ЗаказНаПроизводство.Форма.ФормаДокумента.Форма(590,5)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
    <<?>>КонецЕсли; (Проверка: Толстый клиент (обычное приложение))
20 sanja26
 
13.06.12
15:56
пробела может не хватает
21 discant
 
13.06.12
15:58
Где?
22 Шапокляк
 
13.06.12
15:59
А про мутабельное значение не говорили? Это ДеревоЗаказов - какого типа?
23 Buster007
 
13.06.12
16:02
у меня не вылазит такой ошибки. ЧЯДНТ?
24 discant
 
13.06.12
16:02
Реквизит ДеревоЗаказов типа строка
25 mikecool
 
13.06.12
16:03
такого плана тема первая на мисте?
26 Buster007
 
13.06.12
16:03
а какой код до этого?
27 discant
 
13.06.12
16:04
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   
   // Установка кнопок заполнение ТЧ
   УстановитьКнопкиПодменюЗаполненияТЧ();
   
   Отказ = Не УправлениеЗаказами.ИспользоватьЗаказыНаПроизводство(Истина);
28 Бледно Золотистый
 
13.06.12
16:06
(27) и все?
29 Buster007
 
13.06.12
16:07
(27) полностью скидывай что там написано выше. Куски нам не нужны.
30 Шапокляк
 
13.06.12
16:07
Если ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство.ДеревоЗаказов) Тогда  
вот это "Тогда" и в модуле не красное? Значит там нерусские буквы, перебейте и другие ошибки вылезут
31 Buster007
 
13.06.12
16:08
(30) я думаю он копировал код с формы ) а я отсюда его скопировал и вставил себе ) всё без ошибок.
32 Бледно Золотистый
 
13.06.12
16:09
(27) попробуй скопировать код из темы обратно себе.
33 Шапокляк
 
13.06.12
16:10
(31) Да ладно... а где для
    Пока ии > 0 Цикл
оператор КонецЦикла?
34 Buster007
 
13.06.12
16:10
(32) его и копировал.
35 Buster007
 
13.06.12
16:11
(33) вот
           ии = ии - 1;
       КонецЦикла;
36 Бледно Золотистый
 
13.06.12
16:11
(34) Это я ТСу
37 Buster007
 
13.06.12
16:11
(36) а, ясн )
38 Strogg
 
13.06.12
16:19
ТС, посмотри вложенность циклов и условий. Сдается мне, что они у тебя пересекаются...
39 KindLion
 
13.06.12
16:24
(0) Что, еще не нашел?
Вот это вот "Если" не закрыто концом если:

" Если НЕ ЗначениеЗаполнено(ДеревоЗаказов) Тогда"
40 undertaker
 
13.06.12
16:38
(39) закрыто последним КонецЕсли
41 Buster007
 
13.06.12
16:39
а у ТС всё заработало уже и он свалил судя по всему )
42 discant
 
13.06.12
16:43
Нет. привожу кодПроцедура ПриЗаписи(Отказ)
//....Ваша обработка......
//....Ваша обработка...

    // В ДеревоЗаказов вставляем № документа, если это 1-й док-т дерева,
    //т.е. ОсновнойЗаказНаПроизводство - не заполнено.
    Если НЕ ЗначениеЗаполнено(Номер) Тогда
        УстановитьНовыйНомер(ОсновнойЗаказНаПроизводство.Организация.Префикс);         
    КонецЕсли;    
    Если НЕ ЗначениеЗаполнено(ДеревоЗаказов) Тогда
        цц = "0123456789";
        ном = "";
        длинаНомера = СтрДлина(Номер);
        ии = длинаНомера;
        Пока ии > 0 Цикл
            Если Найти(цц,Сред(Номер,ии,1)) > 0 Тогда
                ном = Сред(Номер,ии,1) + ном;
            Иначе
                Прервать;
            КонецЕсли;    
            ии = ии - 1;
        КонецЦикла;    
        ном = Строка(Формат(Число(ном),"ЧГ=0"));
        КонецЕсли;
        Если НЕ ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство) Тогда
            //Вытаскиваем №
            ДеревоЗаказов = ном;
        Иначе
            Если ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство.ДеревоЗаказов) Тогда    
                ДеревоЗаказов = СокрЛП(ОсновнойЗаказНаПроизводство.ДеревоЗаказов) + "_" + ном;
            КонецЕсли;    
        КонецЕсли;    
    КонецЕсли;
КонецПроцедуры
43 notebug
 
13.06.12
16:46
перед "КонецПроцедуры" последний "КонецЕсли" убить нужно, вроде уже говорили, имхо)
44 Buster007
 
13.06.12
16:47
(42) автор, лучший отладчик это миста?)
45 notebug
 
13.06.12
16:49
(44) двачую :D
46 Strogg
 
13.06.12
16:51
//....Ваша обработка......

   //....Ваша обработка...


   // В ДеревоЗаказов вставляем № документа, если это 1-й док-т дерева,

   //т.е. ОсновнойЗаказНаПроизводство - не заполнено.
   Процедура УстановитьНовыйНомер(Заказ)
   КонецПроцедуры

   Процедура стронг(Номер, ОсновнойЗаказНаПроизводство, ДеревоЗаказов) Экспорт

   Если НЕ ЗначениеЗаполнено(Номер) Тогда
       УстановитьНовыйНомер(ОсновнойЗаказНаПроизводство.Организация.Префикс);        
   КонецЕсли;    
   
   Если НЕ ЗначениеЗаполнено(ДеревоЗаказов) Тогда
       цц = "0123456789";
       ном = "";
       длинаНомера = СтрДлина(Номер);
       ии = длинаНомера;
       
       Пока ии > 0 Цикл
           Если Найти(цц,Сред(Номер,ии,1)) > 0 Тогда
               
               ном = Сред(Номер,ии,1) + ном;
           Иначе
               Прервать;
           КонецЕсли;    
           ии = ии - 1;
       КонецЦикла;    
       ном = Строка(Формат(Число(ном),"ЧГ=0"));
   КонецЕсли;
   Если НЕ ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство) Тогда
       //Вытаскиваем №
       
       ДеревоЗаказов = ном;
   Иначе
       Если ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство.ДеревоЗаказов) Тогда    
           ДеревоЗаказов = СокрЛП(ОсновнойЗаказНаПроизводство.ДеревоЗаказов) + "_" + ном;
       КонецЕсли;    
   КонецЕсли;
   КонецПроцедуры
47 Бледно Золотистый
 
13.06.12
16:51
(42) Полностью текст модуля выкладывай, если большой, заливай на хостинг, сюда ссылку. По твоему куску кода больше никто ничего не скажет.
48 Strogg
 
13.06.12
16:52
(46)+ адрес говорить, куда ведро пельменей слать?
49 discant
 
13.06.12
17:10
Привожу модуль полностью

Перем мТекущаяДатаДокумента; // Хранит последнюю установленную дату документа - для проверки перехода документа в другой период

Перем мКолонкиПродукция, мКолонкиМатериалы;
Перем мФормаВводПараметровВыпуска, мТекущаяСтрокаПродукцияПараметры;

Перем мЧас;
Перем мМинута;

// Хранит дерево кнопок подменю заполнение ТЧ
Перем мКнопкиЗаполненияТЧ;

Перем мИспользоватьТолькоСборочныеСпецификации Экспорт;

Перем мПодразделение;

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ

// Процедура устанавливает подменю "Заполнить" в командных панелях ТЧ документа при необходимости
//
Процедура УстановитьКнопкиПодменюЗаполненияТЧ();
   
   мКнопкиЗаполненияТЧ = УниверсальныеМеханизмы.ПолучитьДеревоКнопокЗаполненияТабличныхЧастей(Ссылка,Новый Действие("НажатиеНаДополнительнуюКнопкуЗаполненияТЧ"));
   
   СоответствиеТЧ = Новый Соответствие;
   СоответствиеТЧ.Вставить(ЭлементыФормы.Продукция,ЭлементыФормы.КоманднаяПанельПродукция.Кнопки.ПодменюЗаполнить);
   СоответствиеТЧ.Вставить(ЭлементыФормы.Материалы,ЭлементыФормы.КоманднаяПанельМатериалы.Кнопки.ПодменюЗаполнить);
   
   УниверсальныеМеханизмы.СформироватьПодменюЗаполненияТЧПоДеревуКнопок(мКнопкиЗаполненияТЧ,СоответствиеТЧ);
   
КонецПроцедуры // УстановитьКнопкиПодменюЗаполненияТЧ()

// Процедура изменяет доступность элемента формы .ВремяНапоминания
//
Процедура ДоступностьНапоминаний()

   ЭлементыФормы.ВремяНапоминания.Доступность = НапомнитьОСобытии;
   
КонецПроцедуры // ДоступностьНапоминаний()

// Функция формирует список запросов для передачи в форму подбора.
//
// Параметры:
//  ТабличнаяЧасть - табличная часть, для подбора в которую формируется список запросов.
//
// Возвращаемое значение:
//  Список значений - список запросов.
//
Функция СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть)

   СписокЗапросов      = Новый СписокЗначений();
   СписокЗапросов.Добавить(,"По справочнику");
   Если ТабличнаяЧасть = Материалы Тогда
       СписокЗапросов.Добавить("ОстаткиНоменклатуры",    "По остаткам номенклатуры");
       СписокЗапросов.Добавить("Спецификации",        "По спецификациям");
   КонецЕсли;

   Возврат СписокЗапросов;

КонецФункции // СформироватьСписокЗапросовДляПодбора()

// Процедура обновляет параметры в форме подбора, если она открыта.
//
// Параметры:
//  Реквизит - измененный реквизит.
//
Процедура ОбновитьФормуПодбора(Реквизит)

   РаботаСДиалогами.ОбновитьПараметрыИФормуПодбора(ЭтотОбъект, ЭтаФорма, Реквизит);

КонецПроцедуры // ОбновитьФормуПодбора()

// Процедура вызывает сервисный механизм для подбора номеклатуры в табличную часть.
//
// Параметры:
//  ТабличнаяЧасть - табличная часть, в которую осуществляется подбор.
//
Процедура ДействиеПодбор(ТабличнаяЧасть)

   Перем Команда, Валюта;

   ЕстьСерия               = Ложь;
   ОтборУслугПоСправочнику = Ложь;
   ПодбиратьУслуги         = Истина;

   Если ТабличнаяЧасть = Продукция Тогда
       Команда                 = "ПодборВТабличнуюЧастьПродукция";
       ИмяТабличнойЧасти       = "Продукция";
   ИначеЕсли ТабличнаяЧасть = Материалы Тогда
       Команда           = "ПодборВТабличнуюЧастьМатериалы";
       ИмяТабличнойЧасти = "Материалы";
   КонецЕсли;

   СписокВидовПодбора = СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть);
   ПредставлениеДок = Метаданные().Представление();

   СтруктураПараметровПодбора = Новый Структура();
   СтруктураПараметровПодбора.Вставить("Команда"            , Команда);
   СтруктураПараметровПодбора.Вставить("СписокВидовПодбора" , СписокВидовПодбора);

   // Параметры запросов.
   ВременнаяДатаРасчетов = ?(НачалоДня(Дата) = НачалоДня(ТекущаяДата()), Неопределено, Дата);
   СтруктураПараметровПодбора.Вставить("ДатаРасчетов"           , ВременнаяДатаРасчетов);
   СтруктураПараметровПодбора.Вставить("Склад"                  , Неопределено);
   СтруктураПараметровПодбора.Вставить("Организация"            , Организация);

   СтруктураПараметровПодбора.Вставить("ЕстьЦена"               , Ложь);
   СтруктураПараметровПодбора.Вставить("ЕстьСерия"              , ЕстьСерия);
   СтруктураПараметровПодбора.Вставить("ВалютаДокумента"        , мВалютаРегламентированногоУчета);
   СтруктураПараметровПодбора.Вставить("ПодбиратьУслуги"        , ПодбиратьУслуги);
   СтруктураПараметровПодбора.Вставить("ОтборУслугПоСправочнику", ОтборУслугПоСправочнику);
   СтруктураПараметровПодбора.Вставить("Заголовок", "Подбор номенклатуры в документ " +
                                       ПредставлениеДок + " № " + Номер + " (" + ИмяТабличнойЧасти + ")");

   РаботаСДиалогами.ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора, Метаданные());

КонецПроцедуры // ДействиеПодбор()

// Производит заполнение документа переданными из формы подбора данными.
//
// Параметры:
//  ТабличнаяЧасть    - табличная часть, в которую надо добавлять подобранную позицию номенклатуры;
//  ЗначениеВыбора    - структура, содержащая параметры подбора.
//
Процедура ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора) Экспорт

   Перем СпособЗаполненияЦен, ВалютаЦены;
   Перем Номенклатура, ЕдиницаИзмерения, Количество, КоличествоМест, Цена, Характеристика, Серия;
   Перем Спецификация, текПродукция, ХарактеристикаПродукции, КоличествоПродукции, ВидВоспроизводства;

   // Получим параметры подбора из структуры подбора.
   ЗначениеВыбора.Свойство("СпособЗаполненияЦен", СпособЗаполненияЦен);
   ЗначениеВыбора.Свойство("ВалютаЦены"         , ВалютаЦены);

   ЗначениеВыбора.Свойство("Номенклатура"    , Номенклатура);
   ЗначениеВыбора.Свойство("ЕдиницаИзмерения", ЕдиницаИзмерения);
   ЗначениеВыбора.Свойство("Количество"      , Количество);
   ЗначениеВыбора.Свойство("Цена"            , Цена);
   ЗначениеВыбора.Свойство("Характеристика"  , Характеристика);
   ЗначениеВыбора.Свойство("Спецификация"    , Спецификация);
   ЗначениеВыбора.Свойство("Продукция"       , текПродукция);
   ЗначениеВыбора.Свойство("ХарактеристикаПродукции"  , ХарактеристикаПродукции);
   ЗначениеВыбора.Свойство("КоличествоПродукции"  , КоличествоПродукции);
   ЗначениеВыбора.Свойство("ВидВоспроизводства"  , ВидВоспроизводства);

   // Ищем выбранную позицию в таблице подобранной номенклатуры.
   //  Если найдем - увеличим количество; не найдем - добавим новую строку.
   СтруктураОтбора = Новый Структура();
   СтруктураОтбора.Вставить("ЕдиницаИзмерения", ЕдиницаИзмерения);
   СтруктураОтбора.Вставить("ХарактеристикаНоменклатуры", Характеристика);
   Если  ТабличнаяЧасть = Материалы и ЗначениеЗаполнено(Спецификация) Тогда
       СтруктураОтбора.Вставить("ХарактеристикаПродукции", ХарактеристикаПродукции);
       СтруктураОтбора.Вставить("Продукция", Продукция);
       СтруктураОтбора.Вставить("Спецификация", Спецификация);
       СтруктураОтбора.Вставить("ВидВоспроизводства", ВидВоспроизводства);
   КонецЕсли;
   

   СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ТабличнаяЧасть, СтруктураОтбора);
   Если СтрокаТабличнойЧасти <> Неопределено Тогда

       // Нашли, увеличиваем количество в первой найденной строке.
       СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;
           
       // Рассчитать реквизиты табличной части.
       ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
       
   Иначе

       // Не нашли - добавляем новую строку.
       СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
       СтрокаТабличнойЧасти.Номенклатура     = Номенклатура;
       СтрокаТабличнойЧасти.Количество       = Количество;
       СтрокаТабличнойЧасти.ЕдиницаИзмерения = ЕдиницаИзмерения;
       СтрокаТабличнойЧасти.Коэффициент      = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
       СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Характеристика;

       // Рассчитываем реквизиты табличной части.
       ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, Ложь);
       
       Если ТабличнаяЧасть = Продукция Тогда
           СтрокаТабличнойЧасти.Спецификация        = УправлениеПроизводством.ОпределитьСпецификациюПоУмолчанию(СтрокаТабличнойЧасти.Номенклатура, СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры, Дата, Подразделение);
       КонецЕсли;
       Если ТабличнаяЧасть = Материалы и ЗначениеЗаполнено(Спецификация) Тогда
             СтрокаТабличнойЧасти.Спецификация = Спецификация;
             СтрокаТабличнойЧасти.Продукция = текПродукция;
             СтрокаТабличнойЧасти.ХарактеристикаПродукции = ХарактеристикаПродукции;
             СтрокаТабличнойЧасти.ВидВоспроизводства = ВидВоспроизводства;
             //Если такой продукции нет в ТЧ Продукция - добавим
             СтруктураОтбораПродукция = новый Структура("Номенклатура, ХарактеристикаНоменклатуры, Спецификация",текПродукция,ХарактеристикаПродукции,Спецификация);
             Если Продукция.НайтиСтроки(СтруктураОтбораПродукция).Количество()=0 и ЗначениеЗаполнено(текПродукция) Тогда
                 СтрокаТабЧастиПродукция = Продукция.Добавить();
                 СтрокаТабЧастиПродукция.Номенклатура = текПродукция;
                 СтрокаТабЧастиПродукция.ХарактеристикаНоменклатуры = ХарактеристикаПродукции;
                 СтрокаТабЧастиПродукция.Спецификация = Спецификация;
                 СтрокаТабЧастиПродукция.Коэффициент = 1;
                 СтрокаТабЧастиПродукция.ЕдиницаИзмерения = текПродукция.ЕдиницаХраненияОстатков;
                 СтрокаТабЧастиПродукция.Количество = КоличествоПродукции;
                 УстановитьВидВоспроизводстваПоУмолчанию(СтрокаТабЧастиПродукция, Продукция);
             КонецЕсли;
             
       КонецЕсли;
       
       Если не ЗначениеЗаполнено(СтрокаТабличнойЧасти.ВидВоспроизводства) Тогда
           УстановитьВидВоспроизводстваПоУмолчанию(СтрокаТабличнойЧасти, ТабличнаяЧасть);
       КонецЕсли;    
   КонецЕсли;

   Если ТабличнаяЧасть = Продукция Тогда
       ИмяТабличнойЧасти = "Продукция";
   ИначеЕсли ТабличнаяЧасть = Материалы Тогда
       ИмяТабличнойЧасти = "Материалы";
       УстановитьДоступностьКнопкиЗаполнитьИПровести();
   КонецЕсли;
   
   ЭлементыФормы[ИмяТабличнойЧасти].ТекущаяСтрока  = СтрокаТабличнойЧасти;
   ЭлементыФормы[ИмяТабличнойЧасти].ТекущаяКолонка = ЭлементыФормы[ИмяТабличнойЧасти].Колонки["Количество"];

КонецПроцедуры // ОбработкаПодбора()

// Производит заполнение и установку необходимых полей при изменении характеристики товара в табличной части.
//
Процедура ПриИзмененииХарактеристикиНоменклатурыТоваров(СтрокаТабличнойЧасти)

   // Заполняем реквизиты табличной части.
   ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

КонецПроцедуры // ПриИзмененииХарактеристикиНоменклатурыТоваров()

// Процедура - обработчик события "ОбработкаВыбора" поля Исполнитель
//
// Параметры:
//  Элемент - элемент формы, который отображает физическое лицо
//
Процедура ИсполнительОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   
   Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.СотрудникиОрганизаций") Тогда
       Элемент.Значение = ВыбранноеЗначение.Физлицо;
   Иначе
       Элемент.Значение = ВыбранноеЗначение;
   КонецЕсли;
   
КонецПроцедуры

// Процедура - обработчик события "ПриИзменении" поля ввода Исполнитель
//
// Параметры:
//  Элемент - элемент формы, который отображает физическое лицо
//
Процедура ИсполнительНачалоВыбора(Элемент, СтандартнаяОбработка)
   // переопеределим выбор физлица на выбор из списка сотрудников
   ПроцедурыУправленияПерсоналомПереопределяемый.ОткрытьФормуВыбораСотрудника(Элемент, Ссылка, Истина, Дата, СтандартнаяОбработка, Элемент.Значение);
КонецПроцедуры

// Процедура - обработчик события "АвтоПодборТекста" поля ввода Исполнитель
// переопеределим выбор физлица на выбор из списка регистра сведений
//
Процедура ИсполнительАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
   ТекстАвтоПодбора = ПроцедурыУправленияПерсоналомДополнительный.ПодобратьФИОСотрудника(СтандартнаяОбработка, "Работники", Текст);
КонецПроцедуры

// Процедура - обработчик события "ОкончаниеВводаТекста" поля ввода Исполнитель
// переопеределим выбор физлица на выбор из списка регистра сведений
//
Процедура ИсполнительОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
   
   Значение = ПроцедурыУправленияПерсоналомДополнительный.ПодобратьСписокСотрудников(СтандартнаяОбработка, "Работники", Текст, Элемент.Значение, , Истина);
   
КонецПроцедуры

// Заполняет переданную табличную часть по остаткам
//
// Параметры:
//  ТабличнаяЧасть  - табличная часть документа.
//    ЗаказПокупателя - заказ по которому производится заполнение
//    Очистить        - очистить предварительно ТЧ или добавить в конец
//
Процедура ЗаполнитьТабличнуюЧастьПоЗаказуПокупателю(ТабличнаяЧасть, ЗаказПокупателя = Неопределено, Очистить = Истина, ТипДокумента = Неопределено)

   Если НЕ ЗначениеЗаполнено(ЗаказПокупателя) Тогда
   
       ФормаЗаказы = Документы[ТипДокумента].ПолучитьФормуВыбора();
       ФормаЗаказы.Заголовок = "Выберите заказ покупателя для заполнения заказа на производство";
       ФормаЗаказы.РежимВыбора = Истина;
       
       ЗаказПокупателя = ФормаЗаказы.ОткрытьМодально();
       
   КонецЕсли;

   Если НЕ ЗначениеЗаполнено(ЗаказПокупателя) Тогда
       Возврат;
   КонецЕсли;

   Если Очистить И ТабличнаяЧасть.Количество() > 0 Тогда
       
       ТекстВопроса = "Табличная часть ""Продукция"" уже содержит строки."
                     + Символы.ПС + "При заполнении они будут удалены! Продолжить?";
       Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да,);
       Если Ответ <> КодВозвратаДиалога.Да Тогда
           Возврат;
       КонецЕсли;
       
       ТабличнаяЧасть.Очистить();
   КонецЕсли;

   ЗаполнитьПродукциюПоЗаказуПокупателю(ЗаказПокупателя);

КонецПроцедуры // ЗаполнитьТабличнуюЧастьПоЗаказуПокупателю()

// Заполняет переданную табличную часть по остаткам
//
// Параметры:
//  ТабличнаяЧасть  - табличная часть документа.
//    ЗаказПокупателя - заказ по которому производится заполнение
//    Очистить        - очистить предварительно ТЧ или добавить в конец
//
Процедура ЗаполнитьТабличнуюЧастьПоВнутреннемуЗаказу(ТабличнаяЧасть, ВнутреннийЗаказ = Неопределено, Очистить = Истина, ТипДокумента = Неопределено)

   Если НЕ ЗначениеЗаполнено(ВнутреннийЗаказ) Тогда
       ФормаЗаказы = Документы[ТипДокумента].ПолучитьФормуВыбора();
       ФормаЗаказы.Заголовок = "Выберите внутренний заказ для заполнения заказа на производство";
       ФормаЗаказы.РежимВыбора = Истина;
       ВнутреннийЗаказ = ФормаЗаказы.ОткрытьМодально();
   КонецЕсли;

   Если НЕ ЗначениеЗаполнено(ВнутреннийЗаказ) Тогда
       Возврат;
   КонецЕсли;

   Если Очистить И ТабличнаяЧасть.Количество() > 0 Тогда
       
       ТекстВопроса = "Табличная часть ""Продукция"" уже содержит строки."
                     + Символы.ПС + "При заполнении они будут удалены! Продолжить?";
       Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да,);
       Если Ответ <> КодВозвратаДиалога.Да Тогда
           Возврат;
       КонецЕсли;
       
       ТабличнаяЧасть.Очистить();
   КонецЕсли;

   ЗаполнитьТабличнуюЧастьПоОстаткамВнутреннийЗаказ(ТабличнаяЧасть, ВнутреннийЗаказ);

КонецПроцедуры // ЗаполнитьТабличнуюЧастьПоЗаказуПокупателю()

// Заполняет переданную табличную часть по остаткам
//
// Параметры:
//  ТабличнаяЧасть  - табличная часть документа.
//    ЗаказНаПроизводство - заказ по которому производится заполнение
//    Очистить        - очистить предварительно ТЧ или добавить в конец
//
Процедура ЗаполнитьТабличнуюЧастьПоЗаказуНаПроизводство(ТабличнаяЧасть, ЗаказНаПроизводство = Неопределено, Очистить = Истина, ТипДокумента = Неопределено)

   Если НЕ ЗначениеЗаполнено(ЗаказНаПроизводство) Тогда
       ФормаЗаказы = Документы[ТипДокумента].ПолучитьФормуВыбора();
       ФормаЗаказы.Заголовок = "Выберите заказ на производство для заполнения заказа на производство";
       ФормаЗаказы.РежимВыбора = Истина;
       ЗаказНаПроизводство = ФормаЗаказы.ОткрытьМодально();
   КонецЕсли;

   Если НЕ ЗначениеЗаполнено(ЗаказНаПроизводство) Тогда
       Возврат;
   КонецЕсли;

   Если Очистить И ТабличнаяЧасть.Количество() > 0 Тогда
       
       ТекстВопроса = "Табличная часть ""Продукция"" уже содержит строки."
                     + Символы.ПС + "При заполнении они будут удалены! Продолжить?";
       Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да,);
       Если Ответ <> КодВозвратаДиалога.Да Тогда
           Возврат;
       КонецЕсли;
       
       ТабличнаяЧасть.Очистить();
   КонецЕсли;

   ЗаполнитьПродукциюПоЗаказуНаПроизводство(ЗаказНаПроизводство);

КонецПроцедуры // ЗаполнитьТабличнуюЧастьПоЗаказуПокупателю()

Процедура УстановитьВидВоспроизводстваПоУмолчанию(СтрокаТабличнойЧасти, ТабличнаяЧасть)
       
   Если ТабличнаяЧасть = Продукция Тогда
       СтрокаТабличнойЧасти.ВидВоспроизводства = Перечисления.ВидыВоспроизводстваНоменклатуры.Производство;
   Иначе
       СтрокаТабличнойЧасти.ВидВоспроизводства = СтрокаТабличнойЧасти.Номенклатура.ВидВоспроизводства;
   КонецЕсли;    
КонецПроцедуры

// Производит заполнение документа переданными из формы подбора данными.
//
// Параметры:
//  ТабличнаяЧасть    - табличная часть, в которую надо добавлять подобранную позицию номенклатуры;
//  ЗначениеВыбора    - структура, содержащая параметры подбора.
//
Процедура ОбработкаПодбораПоСпецификации(ТабличнаяЧасть, ЗначениеВыбора)
   
   Перем Спецификация, Количество;
   
   ЗначениеВыбора.Свойство("Спецификация", Спецификация);
   ЗначениеВыбора.Свойство("Количество",    Количество);
   
   Если ТипЗнч(Спецификация) <> Тип("СправочникСсылка.СпецификацииНоменклатуры") Тогда
       Возврат;
   КонецЕсли;
       
   Отбор = Новый Структура();
   
   ИсходныеКомплектующие = УправлениеПроизводством.ПолучитьМатериалыПоСпецификации(Спецификация, Количество, Отбор, Дата, мИспользоватьТолькоСборочныеСпецификации);
   
   Если ИсходныеКомплектующие = Неопределено Тогда
       Возврат;
   КонецЕсли;
   
   Для Каждого Строка Из ИсходныеКомплектующие Цикл
   
       СтруктураПодбора = Новый Структура();
       СтруктураПодбора.Вставить("Номенклатура",       Строка.Номенклатура);
       СтруктураПодбора.Вставить("ЕдиницаИзмерения",   Строка.ЕдиницаИзмерения);
       СтруктураПодбора.Вставить("Характеристика",     Строка.ХарактеристикаНоменклатуры);
       СтруктураПодбора.Вставить("Серия",                Справочники.СерииНоменклатуры.ПустаяСсылка());
       СтруктураПодбора.Вставить("Количество",        Строка.Количество);
       СтруктураПодбора.Вставить("СтатьяЗатрат",        Строка.СтатьяЗатрат);
       СтруктураПодбора.Вставить("ВидВоспроизводства", Строка.ВидВоспроизводства);

       СтруктураПодбора.Вставить("Спецификация",       Спецификация);
       СтруктураПодбора.Вставить("КоличествоПродукции", Количество);
       
       Если ЗначениеЗаполнено(Спецификация)
             И Спецификация.ВидСпецификации = Перечисления.ВидыСпецификаций.Сборочная Тогда
           СтруктураПодбора.Вставить("Продукция",                    Спецификация.ВыходныеИзделия[0].Номенклатура);
           СтруктураПодбора.Вставить("ХарактеристикаПродукции",    Спецификация.ВыходныеИзделия[0].ХарактеристикаНоменклатуры);
       КонецЕсли;

       ОбработкаПодбора(ТабличнаяЧасть, СтруктураПодбора);
       
   КонецЦикла;
   
КонецПроцедуры // ОбработкаПодбораПоСпецификации()

// Процедура очищает колонку "Размещение" табличной части.
//
Процедура ОчиститьРазмещениеВТабличнойЧасти()

   Материалы.Свернуть(
       // Поля (исключаем Размещение)
       "ВидВоспроизводства,
       |ЕдиницаИзмерения,
       |ЕдиницаИзмеренияМест,
       |Заказ,
       |Коэффициент,
       |Номенклатура,
       |НомерПередела,
       |Подразделение,
       |Продукция,
       |Спецификация,
       |ХарактеристикаНоменклатуры,
       |ХарактеристикаПродукции",
       // Количество
       "Количество,
       |КоличествоМест");

КонецПроцедуры

Процедура ДействияФормыРедактироватьНомер(Кнопка)
   МеханизмНумерацииОбъектов.ИзменениеВозможностиРедактированияНомера(ЭтотОбъект.Метаданные(), ЭтаФорма, ЭлементыФормы.ДействияФормы.Кнопки.Подменю, ЭлементыФормы.Номер);
КонецПроцедуры
// Процедура - обработчик события "Файлы".
//
Процедура ДействияФормыФайлы(Кнопка)
   
   Если Ссылка.Пустая() Тогда
       Предупреждение("Сначала запишите документ.");
       Возврат;
   КонецЕсли;

   ФормаФайлов = Справочники.ХранилищеДополнительнойИнформации.ПолучитьФорму("ФормаСпискаФайловИИзображений", ЭтаФорма);
   
   ФормаФайлов.Изображения.Отбор.Объект.Использование                               = Истина;
   ФормаФайлов.Изображения.Отбор.Объект.Значение                                    = Ссылка;
   ФормаФайлов.ЭлементыФормы.Изображения.НастройкаОтбора.Объект.Доступность         = Ложь;
   ФормаФайлов.ЭлементыФормы.Изображения.Колонки.Объект.Видимость                   = Ложь;

   ФормаФайлов.ДополнительныеФайлы.Отбор.Объект.Использование                       = Истина;
   ФормаФайлов.ДополнительныеФайлы.Отбор.Объект.Значение                            = Ссылка;
   ФормаФайлов.ЭлементыФормы.ДополнительныеФайлы.НастройкаОтбора.Объект.Доступность = Ложь;
   ФормаФайлов.ЭлементыФормы.ДополнительныеФайлы.Колонки.Объект.Видимость           = Ложь;

   ОбязательныеОтборы = Новый Структура;
   ОбязательныеОтборы.Вставить("Объект",Ссылка);

   ФормаФайлов.ОбязательныеОтборы = ОбязательныеОтборы;
   
   ФормаФайлов.Открыть();
   
КонецПроцедуры

Процедура ПодразделениеНачалоВыбора(Элемент, СтандартнаяОбработка)
   НастроитьОтборПодразделений(Элемент, СтандартнаяОбработка)
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ УПРАВЛЕНИЯ ВНЕШНИМ ВИДОМ ФОРМЫ

// Процедура устанавливает видимость для тех колонок в табличной части
// "Товары", видимость которых определяется реквизитами документа.
//
// Параметры:
//  Нет.
//
Процедура УстановитьВидимость()

   Колонки      = ЭлементыФормы.Продукция.Колонки;
   КолонкиМатериалы = ЭлементыФормы.Материалы.Колонки;
   
   УстановитьДоступностьКнопкиЗаполнитьИПровести();
   
   // Управление доступностью элементов формы в зависимости от вида операции
   КнопкиКоманднойПанели = ЭлементыФормы.ДействияФормы.Кнопки;

   КнопкиКоманднойПанели.ДействиеАнализ.Доступность = Истина;
   КолонкиМатериалы.Размещение.ИзменятьВидимость         = Истина;

   ЭлементыФормы.Материалы.Колонки.Продукция              .Видимость = мИспользоватьПотребностиЗаказовНаПроизводство;
   ЭлементыФормы.Материалы.Колонки.ХарактеристикаПродукции.Видимость = мИспользоватьПотребностиЗаказовНаПроизводство;

КонецПроцедуры // УстановитьВидимость()

// Процедура устанавливает доступность кнопки "Заполнить и провести". Кнопка доступна,
// если документ - внешний заказ, его дата совпадает с текущей.
//
Процедура УстановитьДоступностьКнопкиЗаполнитьИПровести()

   ЭлементыФормы.ДействияФормы.Кнопки.ДействиеЗаполнитьИПровести.Доступность =
       НачалоДня(Дата) = НачалоДня(ТекущаяДата())
       И Материалы.Количество() > 0;

КонецПроцедуры // УстановитьДоступностьКнопкиЗаполнитьИПровести

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ

// Процедура - обработчик события "ПередОткрытием" формы
//
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   
   // Установка кнопок заполнение ТЧ
   УстановитьКнопкиПодменюЗаполненияТЧ();
   
   Отказ = Не УправлениеЗаказами.ИспользоватьЗаказыНаПроизводство(Истина);
   
КонецПроцедуры // ПередОткрытием()

// Процедура - обработчик события "ПриОткрытии" формы
//
Процедура ПриОткрытии()

   
   Если НЕ ЭтоНовый() Тогда
       НастройкаПравДоступа.ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапрета(ДокументОбъект, ЭтаФорма);
   КонецЕсли;
   
   ДоступностьНапоминаний();

   Если ЭтоНовый() Тогда // проверить объект на то, что он еще не внесен в ИБ

       // Заполнить реквизиты значениями по умолчанию.
       ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, , ПараметрОбъектКопирования);
       Если ПараметрОбъектКопирования<>неопределено Тогда
           ДатаЗапуска = РабочаяДата;
           ДатаИсполнения = РабочаяДата;
       Иначе
           Если НЕ ЗначениеЗаполнено(ДатаИсполнения) Тогда
               ДатаИсполнения = РабочаяДата;
           КонецЕсли;
           Если НЕ ЗначениеЗаполнено(ДатаЗапуска) Тогда
               ДатаЗапуска = РабочаяДата;
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;

   СтруктураКолонок = Новый Структура();

   // Установить колонки, видимостью которых пользователь управлять не может.
   СтруктураКолонок.Вставить("ЕдиницаХранения");
   
   ОбработкаТабличныхЧастей.УстановитьИзменятьВидимостьКолонокТабЧасти(ЭлементыФормы.Продукция.Колонки,    СтруктураКолонок);
   ОбработкаТабличныхЧастей.УстановитьИзменятьВидимостьКолонокТабЧасти(ЭлементыФормы.Материалы.Колонки,    СтруктураКолонок);

   // Вывести в заголовке формы вид операции.
   РаботаСДиалогами.УстановитьЗаголовокФормыДокумента("", ЭтотОбъект, ЭтаФорма);

   // Запомнить текущие значения реквизитов формы.
   мТекущаяДатаДокумента = Дата;

   // Установить видимость колонок "ХарактеристикаНоменклатуры"
   РаботаСДиалогами.УстановитьВидимостьХарактеристикиНоменклатуры(мКолонкиПродукция);
   РаботаСДиалогами.УстановитьВидимостьХарактеристикиНоменклатуры(мКолонкиМатериалы);

   // Установить видимость реквизитов и заголовков колонок.
   УстановитьВидимость();

   УстановитьДоступностьКнопкиЗаполнитьИПровести();
   
   // Установить активный реквизит.
   РаботаСДиалогами.АктивизироватьРеквизитВФорме(ЭтотОбъект, ЭтаФорма,новый Структура("Дата,Организация,Подразделение,ДатаЗапуска,ДатаИсполнения"));
   
   МеханизмНумерацииОбъектов.ДобавитьВМенюДействияКнопкуРедактированияНомера(ЭлементыФормы.ДействияФормы.Кнопки.Подменю);
   МеханизмНумерацииОбъектов.УстановитьДоступностьПоляВводаНомера(Метаданные(), ЭтаФорма, ЭлементыФормы.ДействияФормы.Кнопки.Подменю,ЭлементыФормы.Номер);
   
   // Создать кнопки печати
   ФормированиеПечатныхФорм.СоздатьКнопкиПечати(ЭтотОбъект, ЭтаФорма);
   
КонецПроцедуры // ПриОткрытии()

// Процедура - обработчик события "ОбновлениеОтображения" формы.
//
Процедура ОбновлениеОтображения()

   // Подсчитаем количество строк в табличных частях.
   СтраницыПанели = ЭлементыФормы.ОсновнаяПанель.Страницы;
   
   СтраницыПанели.Продукция.Заголовок        = "Продукция и услуги (" + ДокументОбъект.Продукция .Количество() + " поз.)";
   СтраницыПанели.Материалы.Заголовок        = "Материалы (" + ДокументОбъект.Материалы.Количество() + " поз.)";
   
КонецПроцедуры // ОбновлениеОтображения()

// Процедура - обработчик события "ОбработкаВыбора" формы.
//
Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)

   Перем Команда, Спецификация;

   Если ТипЗнч(ЗначениеВыбора) = Тип("Структура") Тогда
       
       ЗначениеВыбора.Свойство("Команда", Команда);

       Если Команда = "ПодборВТабличнуюЧастьПродукция" Тогда
           ОбработкаПодбора(Продукция, ЗначениеВыбора);
       ИначеЕсли Команда = "ПодборВТабличнуюЧастьМатериалы" Тогда
       
           ЗначениеВыбора.Свойство("Спецификация", Спецификация);
           Если Спецификация <> Неопределено Тогда
               ОбработкаПодбораПоСпецификации(Материалы, ЗначениеВыбора);
           Иначе
               ОбработкаПодбора(Материалы, ЗначениеВыбора);
           КонецЕсли;
           
       КонецЕсли;
       
   КонецЕсли;

КонецПроцедуры // ОбработкаВыбора()
Процедура ПриЗаписи(Отказ)
//....Ваша обработка......
//....Ваша обработка...

    // В ДеревоЗаказов вставляем № документа, если это 1-й док-т дерева,
    //т.е. ОсновнойЗаказНаПроизводство - не заполнено.
    Если НЕ ЗначениеЗаполнено(Номер) Тогда
        УстановитьНовыйНомер(ОсновнойЗаказНаПроизводство.Организация.Префикс);         
    КонецЕсли;    
    Если НЕ ЗначениеЗаполнено(ДеревоЗаказов) Тогда
        цц = "0123456789";
        ном = "";
        длинаНомера = СтрДлина(Номер);
        ии = длинаНомера;
        Пока ии > 0 Цикл
            Если Найти(цц,Сред(Номер,ии,1)) > 0 Тогда
                ном = Сред(Номер,ии,1) + ном;
            Иначе
                Прервать;
            КонецЕсли;    
            ии = ии - 1;
        КонецЦикла;    
        ном = Строка(Формат(Число(ном),"ЧГ=0"));
       
        Если НЕ ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство) Тогда
            //Вытаскиваем №
            ДеревоЗаказов = ном;
        Иначе
            Если ЗначениеЗаполнено(ОсновнойЗаказНаПроизводство.ДеревоЗаказов) Тогда    
                ДеревоЗаказов = СокрЛП(ОсновнойЗаказНаПроизводство.ДеревоЗаказов) + "_" + ном;
            КонецЕсли;    
        КонецЕсли;    
    КонецЕсли;
КонецПроцедуры

// Процедура - обработчик события "ПослеЗаписи" формы.
//
Процедура ПослеЗаписи()

   // Вывести в заголовке формы вид операции.
   РаботаСДиалогами.УстановитьЗаголовокФормыДокумента("", ЭтотОбъект, ЭтаФорма);
   МеханизмНумерацииОбъектов.ОбновитьПодсказкуКодНомерОбъекта(ЭтотОбъект.Метаданные(), ЭлементыФормы.ДействияФормы.Кнопки.Подменю, ЭлементыФормы.Номер);
   Если мПодразделение<>Подразделение Тогда   //изменилось значение подразделения - надо поменять подразделение в корректировках
       ИзменитьПодразделениеВКорректировкахЗаказаНаПроизводство();
   КонецЕсли;
   
КонецПроцедуры // ПослеЗаписи()

Процедура ИзменитьПодразделениеВКорректировкахЗаказаНаПроизводство()
   Запрос = новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ Ссылка,
   |Проведен
   |ИЗ Документ.КорректировкаЗаказаНаПроизводство
   |ГДЕ ЗаказНаПроизводство=&Заказ И Подразделение<>&Подразделение";
   Запрос.УстановитьПараметр("Заказ", Ссылка);
   Запрос.УстановитьПараметр("Подразделение", Подразделение);
   Результат = Запрос.Выполнить();
   Если Результат.Пустой() Тогда
       Возврат;
   КонецЕсли;

   Выборка = Результат.Выбрать();
   Пока Выборка.Следующий() цикл
       ДокОбъект = Выборка.ссылка.ПолучитьОбъект();
       Попытка
           ДокОбъект.Заблокировать();
           ДокОбъект.Подразделение = Подразделение;
           ДокОбъект.Записать(?(Выборка.Проведен,РежимЗаписиДокумента.Проведение,РежимЗаписиДокумента.Запись));
       Исключение
           ОбщегоНазначения.Сообщение("Не удалось автоматически изменить подразделение в документе "+Выборка.Ссылка,
50 undertaker
 
13.06.12
17:11
(49) походу не получилось полностью
51 Aprobator
 
13.06.12
17:11
вот какая ... модуль полностью попросила??? Спасибо, конфу не выложил.
А вообще, есть у меня предположение, что где то вместо ";" - ":" затесалось.
52 Aprobator
 
13.06.12
17:14
а на Тогда ругается - попробуй перенабрать. Мало ли агличкий символ затесался.
53 undertaker
 
13.06.12
17:22
если убрать процедуру ПриЗаписи - без ошибок будет? Если да, то добавляй поблочно и после каждого добавления проверяй. Блоки - конструкции Если и циклы, если блоки вложенные, то сначала блок верхнего уровня, потом вложенный.
54 Buster007
 
13.06.12
17:23
вставил весь модуль ) такой ошибки не наблюдаю)
55 discant
 
13.06.12
17:42
А у меня есть... Перенабирать Тогда пробовал, процедура ПриЗаписи(Отказ) меняю на Проц1() та же песня
56 Aprobator
 
13.06.12
17:45
мистика какая то.