Имя: Пароль:
1C
1С v8
ТЗ Свернуть(). Я что-то не понимаю, метод Свернуть?
,
0 егаис
 
25.10.16
21:04
Функция ПолучитьДанные(ПолучениеДанныхИзОбработки = Ложь, НомерТаблицы = 8, СоздаватьХарактеристики = Ложь, СписокИД = Неопределено) Экспорт
    
    Если ТСД.КодМодели = "ATOLMLD" Тогда
        ТаблицаТоваров = ПолучитьДанныеИзТСДАТОЛМЛ(ПолучениеДанныхИзОбработки, НомерТаблицы, СоздаватьХарактеристики, СписокИД);
    ИначеЕсли ТСД.КодМодели = "ATOLMLDDOS" Тогда
        Если НомерТаблицы = 8 Тогда
            НомерТаблицы = 3;
        КонецЕсли;          
        
        ТаблицаТоваров = ПолучитьДанныеИзТСДАТОЛМЛДОС(ПолучениеДанныхИзОбработки, НомерТаблицы, СписокИД);
    ИначеЕсли ТСД.КодМодели = "CLV_MBS" Тогда
        ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        ДиалогФыбораФайла.Фильтр = "Таблиа (*.csv)|*.csv";
        ДиалогФыбораФайла.Заголовок = "Выберите файл";                                        
        ДиалогФыбораФайла.ПредварительныйПросмотр = Истина;
        ДиалогФыбораФайла.ИндексФильтра = 0;
        Если ДиалогФыбораФайла.Выбрать() Тогда
            ПолноеИмяФайла = ДиалогФыбораФайла.ПолноеИмяФайла;
            
            ТаблицаТоваров = Новый ТаблицаЗначений;
            ТаблицаТоваров.Колонки.Добавить("ШтрихКод"        , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(60)));
            ТаблицаТоваров.Колонки.Добавить("АлкоКод"         , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(20)));
            ТаблицаТоваров.Колонки.Добавить("АкцизнаяМарка"   , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
            ТаблицаТоваров.Колонки.Добавить("СерияНомер"      , Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(70)));
            
            ТаблицаТоваров.Колонки.Добавить("Номенклатура"    , Новый ОписаниеТипов("СправочникСсылка.ЕГАИС_Номенклатура"));
            ТаблицаТоваров.Колонки.Добавить("НоменклатураУчет", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
            ТаблицаТоваров.Колонки.Добавить("ХарактеристикаНоменклатуры", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
            ТаблицаТоваров.Колонки.Добавить("ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"));
            ТаблицаТоваров.Колонки.Добавить("Количество"      , Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
            
            //обработаем файл
            ЗагружаемыйФайл = Новый ТекстовыйДокумент;
            ЗагружаемыйФайл.Прочитать(ПолноеИмяФайла);
            
            Для НомерСтроки = 2 по ЗагружаемыйФайл.КоличествоСтрок() Цикл

                Состояние("Обрабатывается "+Строка(Формат(?(ЗагружаемыйФайл.КоличествоСтрок()=0,0,((100*НомерСтроки)/                                                                                                ЗагружаемыйФайл.КоличествоСтрок())),"ЧЦ=3; ЧДЦ=0"))+" %");
                ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break

                // получить стрoку с указанным номером и преобразуем её в массив
                Строка = ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки);
                МассивЗначений = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка,";");// процедура из типовой конфигурации, разбивает строку в массив по разделителям
                
                //проверим номенклатуру
                ШтрихКод = МассивЗначений[0];
                АлкоКод = МассивЗначений[13];
                ТаблицаНоменклатурыУчет = НайтиТоварПоШтрихкоду(ШтрихКод);    
                Если ТаблицаНоменклатурыУчет.Количество() > 1 Тогда
                    Сообщить("По штрих коду: " + ШтрихКод + ", найдено более одной позиции! Внесите изменения вручную!");
                    Продолжить;
                КонецЕсли;    
                НоменклатураУчет = ТаблицаНоменклатурыУчет[0].Номенклатура;
                
                НоменклатураЕГАИСИзТСД = Справочники.ЕГАИС_Номенклатура.НайтиПоКоду(АлкоКод);
                
                //проверка на наличие соответсвия
                ТаблицаНоменклатурыЕГАИС = ОбменУТМ.ПолучитьНоменклатуруЕГАИСПоНоменклатура(НоменклатураУчет);
                НайденнаяСтрока = ТаблицаНоменклатурыЕГАИС.Найти(НоменклатураЕГАИСИзТСД, "ЕГАИС_Номенклатура");
                Если НайденнаяСтрока = Неопределено Тогда
                    Сообщить("Отсутствует соответствие между товаром " + НоменклатураУчет + " и алкокодом " + АлкоКод + "! Внесите изменения вручную!");
                    Продолжить;
                КонецЕсли;
                
                НоваяСтрока = ТаблицаТоваров.Добавить();
                НоваяСтрока.ШтрихКод = ШтрихКод;
                НоваяСтрока.АлкоКод = АлкоКод;
                НоваяСтрока.АкцизнаяМарка = МассивЗначений[14];
                НоваяСтрока.СерияНомер = МассивЗначений[15];
                
                НоваяСтрока.ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
                НоваяСтрока.Номенклатура = НоменклатураЕГАИСИзТСД;
                НоваяСтрока.НоменклатураУчет = НоменклатураУчет;
                НоваяСтрока.ЕдиницаИзмерения = НоменклатураУчет.БазоваяЕдиницаИзмерения;
                НоваяСтрока.Количество = Число(МассивЗначений[6]);
                
            КонецЦикла;
        КонецЕсли;
    Иначе
        ТаблицаТоваров = ПолучитьДанныеИзТСД(ПолучениеДанныхИзОбработки);
    КонецЕсли;
    
    Возврат ТаблицаТоваров;
    
КонецФункции


При определенных условиях необходимо свернуть таблицу
ТаблицаТоваров.Свернуть("Номенклатура", "Количество");
Получаем
ТаблицаТоваров.свернуть("Номенклатура", "Количество")    {(1)}: Обращение к процедуре объекта как к функции (свернуть)    

Что за нафиг?
1 егаис
 
25.10.16
21:06
рабочий блок после
   ИначеЕсли ТСД.КодМодели = "CLV_MBS" Тогда
2 Мимохожий Однако
 
25.10.16
21:07
Буква С латинская? )) Отладчик что показывает?
3 егаис
 
25.10.16
21:08
да нифига, все верно.
отладчик и показывает ошибку
4 Artful Den
 
25.10.16
21:12
ТЗ1 = ТаблицаТоваров.Скопировать();
ТЗ1.Свернуть("Номенклатура", "Количество"); ?
5 Сияющий Асинхраль
 
25.10.16
21:13
Проверь для начала, что ТаблицаТоваров - это на самом деле таблица значений, скорее всего, при каких-то условиях у тебя делается, что-то отличное от ТЗ
6 егаис
 
25.10.16
21:20
7 егаис
 
25.10.16
21:20
эпик
8 Сияющий Асинхраль
 
25.10.16
21:23
(6) Показал бы тогда и колонки ТЗ
9 ВРедная
 
25.10.16
21:24
Вот тут

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


Действительно нет точки с запятой в конце?
10 ВРедная
 
25.10.16
21:25
Ощущение, что у тебя где-то присваивание не завершилось...
11 егаис
 
25.10.16
21:30
Начинаю верить в чудеса...
Перегрузил конфигуратор, теперь не падает с ошибкой, все сворачивается, но тем не менее если написать в отладке свернуть, пишет ошибку.
12 КнОпка
 
25.10.16
21:32
(11) а ТЗ.количество() что говорит?

похоже кеш пора чистить. это не чудеса а проделки лешего))
13 Cyberhawk
 
25.10.16
21:34
Автор дятел? Метод "Свернуть" для ТЗ - это процедура, а не функция. Через табло выполнять процедуры нельзя.
14 егаис
 
25.10.16
21:35
(13) точно, спасибо, добрый человек
15 Cyberhawk
 
25.10.16
21:38
(14) Заработался?
16 КнОпка
 
25.10.16
21:39
(13) у него и при выполнении кода ошибка выходит
17 Cyberhawk
 
25.10.16
21:42
(16) Гонишь, давай пруф
18 КнОпка
 
25.10.16
21:50
(17) на картинке в (6)
Не знаю только зачем стоп поставил на этой строке и начал проверять код в табло))
19 Cyberhawk
 
25.10.16
22:10
(18) Ты видишь то, что хочешь видеть. Кончай вещества принимать.
20 bolder
 
25.10.16
23:11
(18) На картинке - ошибка в ТАБЛО а не в коде.Первоклассники))
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс