Имя: Пароль:
1C
 
1C вешается при обмене
0 Niger
 
16.03.09
10:39
Добавил алгоритм изменения табличной части при выгрузке из торговли в бухгалтерию.
Отдельно (без обмена) алгоритм отрабатывает, причем довольно быстро, а в правилах на строке 20 вешает 1С.
Где копать?
Код:
ТабТовары = Источник.Товары.Выгрузить();
Для каждого СтрокаТовары Из ТабТовары Цикл
   СтрокаТовары.Количество = СтрокаТовары.Количество * СтрокаТовары.ЕдиницаИзмерения.Коэффициент;
   СтрокаТовары.Цена = СтрокаТовары.Цена / СтрокаТовары.Коэффициент;
КонецЦикла;

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

ТабПартии = РезультатЗапроса.Выгрузить();

КоллекцияОбъектов = ТабТовары.Скопировать();
КоллекцияОбъектов.Очистить();
КоллекцияОбъектов.Колонки.Добавить("ОтражениеВУСН");
Сообщить("Ссылка: "+Источник.Ссылка);
Для каждого СтрокаТЧ ИЗ ТабТовары Цикл
   
   СтруктураПоиска = Новый Структура;
   СтруктураПоиска.Вставить("Номенклатура", СтрокаТЧ.Номенклатура);
   СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", СтрокаТЧ.ХарактеристикаНоменклатуры);
   Если СтрокаТЧ.Номенклатура.ВестиПартионныйУчетПоСериям Тогда
       СтруктураПоиска.Вставить("СерияНоменклатуры", СтрокаТЧ.СерияНоменклатуры);
   КонецЕсли;
   
   НайденныеСтроки = ТабПартии.НайтиСтроки(СтруктураПоиска);
   
   ОстКоличество = СтрокаТЧ.Количество;
   Для каждого СтрокаПартии ИЗ НайденныеСтроки Цикл
       Если ОстКоличество > 0 И СтрокаПартии.Количество > 0 Тогда
           НоваяСтрока = КоллекцияОбъектов.Добавить();
           Для каждого Колонка ИЗ ТабТовары.Колонки Цикл
               Если Колонка.Имя = "НомерСтроки" Тогда
                   Продолжить;
               КонецЕсли;
               НоваяСтрока[Колонка.Имя] = СтрокаТЧ[Колонка.Имя];
           КонецЦикла;
           НоваяСтрока.Количество = Мин(СтрокаПартии.Количество, ОстКоличество);
           НоваяСтрока.Сумма = НоваяСтрока.Количество * СтрокаТЧ.Цена;
           НоваяСтрока.ОтражениеВУСН = "Принимаются";
           СтрокаПартии.Количество = СтрокаПартии.Количество - НоваяСтрока.Количество;
           ОстКоличество = ОстКоличество - НоваяСтрока.Количество;
           Сообщить("Строка: "+НоваяСтрока.Номенклатура+" - "+НоваяСтрока.ОтражениеВУСН);
       КонецЕсли;
   КонецЦикла;
   
   Если ОстКоличество > 0 Тогда
       НоваяСтрока = КоллекцияОбъектов.Добавить();
       Для каждого Колонка ИЗ ТабТовары.Колонки Цикл
           НоваяСтрока[Колонка.Имя] = СтрокаТЧ[Колонка.Имя];
       КонецЦикла;
       НоваяСтрока.Количество = ОстКоличество;
       НоваяСтрока.Сумма = НоваяСтрока.Количество * СтрокаТЧ.Цена;
       НоваяСтрока.ОтражениеВУСН = "НеПринимаются";
       Сообщить("Строка: "+НоваяСтрока.Номенклатура+" - "+НоваяСтрока.ОтражениеВУСН);
   КонецЕсли;
   
КонецЦикла;
1 ТелепатБот
 
гуру
16.03.09
10:39
2 Defender aka LINN
 
16.03.09
10:46
Которая из них 20я?
3 Нуф-Нуф
 
16.03.09
10:47
(2) 7я
4 Niger
 
16.03.09
10:47
Не в коде, в данных
5 Defender aka LINN
 
16.03.09
10:48
(4) А. Тогда вторник.
6 Niger
 
16.03.09
10:50
(5) отлаживаю через Сообщить - там определенная строка на разных компах и разных платформах 8.1.12 и 8.1.13 результаты одинаковы
7 Defender aka LINN
 
16.03.09
10:52
(6) Отладчиком не пользуешься из принципа?
8 Niger
 
16.03.09
10:54
(7) Нет опыта в отладке правил. Может чего подскажешь?
9 Defender aka LINN
 
16.03.09
10:58
(8) Нет опыта в чем? Какой нужен опыт, чтобы увидеть БОЛЬШУЮ кнопку "Отладка обработчиков"? О_о
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс