Имя: Пароль:
1C
1C 7.7
v7: Печать ценников и этикеток(сортировка по коду и наименованию товара)
,
0 SeeWorld
 
20.07.12
10:55
Всем привет! Задание наверно банальное,но все же. Нужна сортировка по коду и наименованию продукции, то есть на выходе этикетки и ценники в экселе должны быть отсортированы. Сортировка по наименованию должна иметь два варианта(А-Я,Я-А). Сортировка по коду аналогична(по возраст и убыванию). В 1с только начинаю программировать, много чего не понятно. Помогите плиз!(
1 SeeWorld
 
20.07.12
10:57
Перем МаксРяд, МаксСтолбик, Регистрация, Магазин;
Перем Остатки;    

Функция ЗаполнитьИзТерминала()
   Перем ТермДанные;
   Перем УдаляемыеСтроки;
   Перем ВремНоменклатура, ВремЕдиница;
   Перем ЦенаТов, ЕдиницаЦены;
   
   // 1. загружаем данные из терминала
   Если глТерминалЗагрузитьДанные(ТермДанные) = 0 Тогда
       Возврат "";
   КонецЕсли;
   
   // 2. преобразуем таблицу, полученную из обработки терминала в формат для
   // передачи в процедуру обработки подбора

   ТермДанные.НоваяКолонка("Номенклатура");
   ТермДанные.НоваяКолонка("Единица");
   
   УдаляемыеСтроки = СоздатьОбъект("СписокЗначений");
   ТермДанные.ВыбратьСтроки();
   
   Пока ТермДанные.ПолучитьСтроку() = 1 Цикл
       Если глПолучитьТоварПоШтрихкоду(ТермДанные.Штрихкод, ВремНоменклатура, ВремЕдиница, ) = 0 Тогда
           // штрихкод не найден. сохраним номер строки для дальнейшего ее удаления
           УдаляемыеСтроки.ДобавитьЗначение(ТермДанные.НомерСтроки);
       Иначе
           ТермДанные.Номенклатура = ВремНоменклатура;
           ТермДанные.Единица      = ВремЕдиница;
       КонецЕсли;
   КонецЦикла;                                
   
   // 3. удалим строки, по которым не удалось идентифицировать товар
   СчетчикЦикла = 0;
   Для СчетчикЦикла = 1 По УдаляемыеСтроки.РазмерСписка() Цикл
       УдСтр = УдаляемыеСтроки.ПолучитьЗначение(СчетчикЦикла);
       ТермДанные.УдалитьСтроку(УдСтр - СчетчикЦикла + 1);
   КонецЦикла;
   
   ТермДанные.ВыбратьСтроки();
   Пока ТермДанные.ПолучитьСтроку() = 1 Цикл
       ВремНоменклатура = ТермДанные.Номенклатура;
       Если ВремНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга Тогда
           Продолжить;
       КонецЕсли;    
       
       Если  флКоличество = 1 Тогда
           КолНом = ТермДанные.Количество;
           Если ТермДанные.Единица.Наименование <> "ШТ." Тогда
               КолНом = 1;
           КонецЕсли;
           Для Сч = 1 По КолНом Цикл
               Таб.НоваяСтрока();
               Таб.Номенклатура= ВремНоменклатура;
               Таб.ЕдИзм = ТермДанные.Единица;
           КонецЦикла;
       Иначе
           Таб.НоваяСтрока();
           Таб.Номенклатура= ВремНоменклатура;
           Таб.ЕдИзм = ТермДанные.Единица;
       КонецЕсли;
       
   КонецЦикла;
   
   // 4. Спросим про очистку памяти терминала
   Если Вопрос("Очистить память терминала сбора данных?", "Да+Нет", 60) = "Да" Тогда
       глТерминалОчиститьПамять();
   КонецЕсли;
   
   Возврат "";
   
КонецФункции // ЗаполнитьИзТерминала()

Функция ЗагрузитьИзДокумента()
   Перем  ТаблицаДокумента;
   Перем  ДокОснование;
   Перем ВариантЗап;

   Если  глТерминалВключен() = 1 Тогда
       СписВариантов = СоздатьОбъект("СписокЗначений");
       СписВариантов.ДобавитьЗначение(1, "Заполнить по документу");
       СписВариантов.ДобавитьЗначение(2, "Заполнить из терминала");
       
       Если СписВариантов.ВыбратьЗначение(ВариантЗап, , , 60, 1) <> 1 Тогда
           Возврат "";
       КонецЕсли;
   Иначе
       // терминал не включен. Заполняем всегда по остаткам
       ВариантЗап = 1;
   КонецЕсли;

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

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

КонецФункции    // ЗагрузитьИзДокумента

Процедура ПриИзмененииИсторииЦены()
   Если флИсторияЦены = 1 Тогда
       Цена2 = "";
       Форма.Цена2.Доступность(0);
   Иначе
       Форма.Цена2.Доступность(1);
   КонецЕсли;
КонецПроцедуры

// Обрабатывает цену, округляет до "круглого" значения если выбран соответствующий режим и отличие не превышает 5 копеек
Функция ОбработатьЦену(Цена)
Перем Результат;
   Результат = Цена;                      
   Если флВыравниватьЦену = 1 Тогда
       Результат = Окр(Цена,0);
       Если (ABS(Результат-Цена) > 0.05) Тогда
           Результат = Цена;
       КонецЕсли;
   КонецЕсли;
   Возврат глФРМ(Результат,,"");
КонецФункции    // ОбработатьЦену  

//******************************************************************************
// ДобавитьЦенник(Таб, Фирма, Номенклатура, Столбик, Ряд)
//
// Параметры:
//  Таб             - таблица, в которую выполняется вывод ценника
//  Номенклатура    - наименование товара
//  Столбик         - номер столбика.
//  Ряд             - номер ряда
//
// Возвращаемое значение:
//  Нет.
//
// Описание:
//  Добавляет ценник в таблицу
//
Процедура ДобавитьЦенник(Таб, Фирма, Номенклатура, ЕдИзм, Столбик, Ряд) Экспорт    
   Если Столбик > МаксСтолбик тогда
       Столбик = 2;
       Ряд = Ряд + 1;
   иначе
       Столбик    = Столбик +  1;
   КонецЕсли;    
   
   Если Ряд > МаксРяд Тогда
       Таб.НоваяСтраница();
       Столбик = 2; // Столбик следующий  за текущим
       Ряд = 1;
   КонецЕсли;
       

   ЦенаОптовая = "";    ЦенаОптоваяНаим = "";
   ЦенаВторая  = "";    ЦенаВтораяНаим = "";
   ЦенаШт  = "";        ЦенаШтНаим = "";
   
   Код = Номенклатура.код;
   
   Наименование = СокрЛП(Шаблон("[Номенклатура.Наименование]"));
   Если флЗаглавными = 1 Тогда
       Наименование = Врег(Наименование);
   КонецЕсли;
   
   КаталожныйНомер = Номенклатура.КаталожныйНомер;
   ТестСтр = Врег(КаталожныйНомер);
   Если Найти(ТестСтр, "КИТАЙ") <> 0 Тогда
       КаталожныйНомер = "";
   КонецЕсли;
   
   Применяемость = Номенклатура.Применяемость;    
   ТестСтр = Врег(Применяемость);
   Если Найти(ТестСтр, "КИТАЙ") <> 0 Тогда
       Применяемость = "";
   КонецЕсли;
   
   ШК    = ЕдИзм.Штрихкод;

   НДС = глНачисляемыйНДС(Номенклатура.СтавкаНДС);

   Если ПустоеЗначение(Цена1) = 0 тогда
       Цена = 0;
       ЦенаОптовая = 0;
       ЕдИзмОпт = "";
       ЦенаОптоваяНаим = Лев(Цена1.Наименование,6)+". цена";
       Если (флБазоваяЦена = 1) и (Цена1.Рассчитывается = 1) Тогда
           ЦенаОптоваяНаим = Цена1.БазовыйТипЦен.Наименование;
       КонецЕсли;
       Если глВернутьЦену(Номенклатура, Цена1, ДатаПечати, Цена, ЕдИзмОпт) = 1 тогда
           Если ЕдИзмОпт <> ЕдИзм Тогда
               Цена = Цена * ЕдИзм.Коэффициент;
               ЕдИзмОпт = ЕдИзм;
           КонецЕсли;
           Если добНДС = 1 тогда
               Цена = Цена * (1+НДС);
           КонецЕсли;
           ЦенаОптовая = ОбработатьЦену(Цена);
       иначе
           ЦенаОптоваяНаим = "";
       КонецЕсли;
   КонецЕсли;
   
   Если флИсторияЦены = 1 Тогда
       Цена2 = Цена1;  // Загоним сюда предыдущее значение цены1
       Цена = 0;
       ЦенаВторая = "";
       ЕдИзм2 = "";
       ЦенаВтораяНаим = "Цена";
       ДатаПредЦены = "";
       
       ЦеныНоменклатуры= СоздатьОбъект("Справочник.Цены");
       ЦеныНоменклатуры.ИспользоватьВладельца(Номенклатура);
       ЦеныНоменклатуры.ВыбратьЭлементы();

       Пока ЦеныНоменклатуры.ПолучитьЭлемент()  = 1 Цикл
           Если ЦеныНоменклатуры.ТипЦен.Код <> Цена2.Код Тогда
               Продолжить;
           КонецЕсли;

           НайденнаяЦена = ЦеныНоменклатуры.ТекущийЭлемент();

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

           Если глВернутьЦену(Номенклатура, Цена2, ДатаПечати, Цена, ЕдИзм2) = 1 тогда
               Если ЕдИзм2 <> ЕдИзм Тогда
                   Цена = Цена * ЕдИзм.Коэффициент;
                   ЕдИзм2 = ЕдИзм;
               КонецЕсли;
               Если добНДС = 1 тогда
                   Цена = Цена * (1+НДС);
               КонецЕсли;
               ЦенаВторая = ОбработатьЦену(Цена);
           иначе
               ЦенаВтораяНаим = "";
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
   
   Товар3Цены = 0;
   Если ПустоеЗначение(Цена3) = 0 тогда
       Цена = 0;
       ЦенаШт = 0;
       ЕдИзмШт = "";
       ЦенаШтНаим = Цена3.Наименование;
       Если (флБазоваяЦена = 1) и (Цена3.Рассчитывается = 1) Тогда
           ЦенаШтНаим = Цена3.БазовыйТипЦен.Наименование;
       КонецЕсли;
       Товар3Цены = 1;
       Если глВернутьЦену(Номенклатура, Цена3, ДатаПечати, Цена, ЕдИзмШт) = 1 тогда
           Если ЕдИзмШт <> ЕдИзм Тогда
               Цена = Цена * ЕдИзм.Коэффициент;
               ЕдИзмШт = ЕдИзм;
           КонецЕсли;
           Если добНДС = 1 тогда
               Цена = Цена * (1+НДС);
           КонецЕсли;
           ЦенаШт = ОбработатьЦену(Цена);
       иначе
           ЦенаШтНаим = "";
       КонецЕсли;
   КонецЕсли;
   
   Если Размер = 8 Тогда // Товар продается в кредит
       ЕдИзмШт = "";
       ЦенаШтНаим = "";
       ЦенаШт = "";
       Информация = "";
       Если Цена > 3500 Тогда
           Информация = "Продажа в кредит";
           ЦенаШтНаим = "Сумма первоначального взноса";
           ЦенаШт = ОбработатьЦену(Окр(Цена*0.1,-1));
       КонецЕсли;
   КонецЕсли;
   
   Если Столбик = 2 Тогда
       Если флОтступ = 1 тогда // Выводим с отступами
           Таб.ВывестиСекцию("Отступы|Ценник");
       ИначеЕсли (Товар3Цены = 0) и (Размер <> 8)  тогда
           Таб.ВывестиСекцию("Товар|Ценник");
       иначе
           Таб.ВывестиСекцию("Товар3Цены|Ценник");
       КонецЕсли;    
   Иначе
       Если флОтступ = 1 тогда // Выводим с отступами
           Таб.ПрисоединитьСекцию("Отступы|Ценник");
       ИначеЕсли (Товар3Цены = 0) и (Размер <> 8)  тогда
           Таб.ПрисоединитьСекцию("Товар|Ценник");
       иначе
           Таб.ПрисоединитьСекцию("Товар3Цены|Ценник");
       КонецЕсли;
   КонецЕсли;

КонецПроцедуры // ДобавитьЦенник()

Процедура ПриВыбореОстатка()
   Если пкОстатки = 1 тогда
       Форма.кнУдСклад.Доступность(1);
       Форма.Склад.Доступность(1);
   иначе
       Форма.кнУдСклад.Доступность(0);
       Форма.Склад.Доступность(0);
   КонецЕсли;
КонецПроцедуры

//******************************************************************************
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
   // Процедура разбирает штрих-код, считанный сканером
   // и заполняет строки накладной
   Перем Упаковка,ТекКоличество, Спецификация;
   Перем ВремТовар, ВремЕдиница, ВремКоличество;
   Перем ВремЦена, ЕдЦены;

   Если Событие = "BarCodeValue" Тогда
       Если Форма.ТолькоПросмотр() = 0 Тогда
             Если глПолучитьТоварПоШтрихкоду(Данные, ВремТовар, ВремЕдиница, ВремКоличество) <> 0 Тогда

                 Таб.НоваяСтрока();
                 Таб.Номенклатура = ВремТовар;
               Таб.ЕдИзм         = ВремЕдиница;
                 //Таб.Количество   = ВремКоличество;

             КонецЕсли;
         КонецЕсли;

       // Обработка закончена. Готовы к получению нового штрихкода.
       глСканерПосылкаДанных(1);
   КонецЕсли;

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

// Возвращает фирму, на которой есть остаток
Функция ВернутьФирму(ТМЦ)
   Перем Результат, ТЗ, ОстФирма;
   ТЗ = СоздатьОбъект("ТаблицаЗначений");
   Остатки.УстановитьЗначениеФильтра("Номенклатура",ТМЦ,1);
   Остатки.ВыгрузитьИтоги(ТЗ,1,1);
   ТЗ.Свернуть("Фирма","Количество");
   ТЗ.Сортировать("-Количество");
   Если ТЗ.КоличествоСтрок() > 0 Тогда
       ТЗ.ВыбратьСтроки();
       Пока ТЗ.ПолучитьСтроку() = 1 Цикл
           ОстФирма = ТЗ.Фирма;
           Прервать;
       КонецЦикла;
   Иначе
       ОстФирма = ТекФирма.ПолучитьЗначение(ТекФирма.ТекущаяСтрока());
   КонецЕсли;
   Результат = ОстФирма.ЮрЛицо.Наименование;
   Остатки.УстановитьЗначениеФильтра("Номенклатура","");
   Возврат Результат;
КонецФункции    // ВернутьФирму

//*******************************************
Процедура Сформировать()
   //Если ТекФирма.ТекущаяСтрока() = 1 тогда
   //    Фирма = "Открытое Акционерное Общество";
   //    Магазин = "РБС ""Прохладненская""";
   //иначеЕсли ТекФирма.ТекущаяСтрока() = 2 тогда
   //    Фирма = "ООО РБС";
   //    Магазин = "Магазин ""Продукты""";
   //иначеЕсли ТекФирма.ТекущаяСтрока() = 3 тогда
   //    Фирма = "ИП Омельченко И.Я.";
   //    Магазин = "< Продукты >";
   //иначеЕсли ТекФирма.ТекущаяСтрока() = 4 тогда
   //    Фирма = "ООО Мир продуктов";
   //    Магазин = "< Продукты >";
   //КонецЕсли;
   
   
   Отчет = СоздатьОбъект("Таблица");
   Отчет.ИсходнаяТаблица("Таблица"+Размер);
   Если Размер = 1 Тогда
       МаксРяд = 3;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 2 тогда
       МаксРяд = 5;
       МаксСтолбик = 3;
   иначеЕсли Размер = 3  тогда
       МаксРяд = 5;
       МаксСтолбик = 4;
   иначеЕсли Размер = 4  тогда
       МаксРяд = 3;
       МаксСтолбик = 1;
   иначеЕсли Размер = 5  тогда
       МаксРяд = 6;
       МаксСтолбик = 2;
   иначеЕсли Размер = 6  тогда
       МаксРяд = 3;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 7 Тогда
       МаксРяд = 2;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 8 Тогда
       МаксРяд = 2;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 9 Тогда
       МаксРяд = 8;
       МаксСтолбик = 1;
   ИначеЕсли Размер = 10 Тогда
       МаксРяд = 10;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 11 Тогда
       МаксРяд = 1;
       МаксСтолбик = 1;
   ИначеЕсли Размер = 12 Тогда
       МаксРяд = 9;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 13 Тогда
       МаксРяд = 8;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 14 Тогда
       МаксРяд = 10;
       МаксСтолбик = 3;
   ИначеЕсли Размер = 15 Тогда
       МаксРяд = 14;
       МаксСтолбик = 5;
   ИначеЕсли Размер = 16 Тогда
       МаксРяд = 7;
       МаксСтолбик = 3;
   Иначе
       Предупреждение("Нет шаблона ценника", 3);
       Возврат;
   КонецЕсли;

   Если флОтступ = 1 тогда
       МаксРяд = Макс(1, Цел(МаксРяд / 3));
   КонецЕсли;
   
   Столбик = 1;
   Ряд     = 1;
   
   Ном = СоздатьОбъект("Справочник.Номенклатура");
   
   Таб.ВыбратьСтроки();
   
   Пока Таб.ПолучитьСтроку() = 1 Цикл  
       
       Если Таб.Номенклатура.ЭтоГруппа() = 1 тогда
           Ном.ИспользоватьРодителя(Таб.Номенклатура);
           Ном.ВыбратьЭлементы();
           
           Пока Ном.ПолучитьЭлемент() = 1 цикл
               Если (Ном.ЭтоГруппа() = 0) и (Ном.ПометкаУдаления() = 0) тогда  
                   Если пкОстатки = 1 тогда
                       Если (ПустоеЗначение(Склад) = 1) тогда
                           Если (Остатки.СводныйОстаток(, Ном.ТекущийЭлемент(), ,  ,"Количество") <= 0) тогда
                               Продолжить;
                           КонецЕсли;
                       ИначеЕсли (ПустоеЗначение(Склад) = 0) тогда
                           Если (Остатки.СводныйОстаток(, Ном.ТекущийЭлемент(), Склад,  ,"Количество") <= 0) тогда
                               Продолжить;
                           КонецЕсли;    
                       КонецЕсли;
                   КонецЕсли;    
                   Фирма = ВернутьФирму(Ном);
                   Если (пкОстатки = 1) и (ПустоеЗначение(Фирма) = 1) Тогда
                       Фирма = ТекФирма.ТекущаяСтрока();
                   КонецЕсли;
                   
                   ДобавитьЦенник(Отчет, Фирма, Ном, Ном.БазоваяЕдиница, Столбик, Ряд);
                   
               КонецЕсли;
           КонецЦикла;
           Ном.ИспользоватьРодителя();
       иначе
                   
           Фирма = ВернутьФирму(Таб.Номенклатура);  
           ДобавитьЦенник(Отчет, Фирма, Таб.Номенклатура, Таб.ЕдИзм, Столбик, Ряд);
       КонецЕсли;
   КонецЦикла;
   
   Отчет.Показать("Ценники "+?(пкОстатки = 0,"",?(ПустоеЗначение(Склад)=1," по всем складам "," по складу: "+Склад)));
КонецПроцедуры

Процедура ПоКнПодбор()
   ОткрытьПодбор("Справочник.Номенклатура","ДляВыбора",1,);
КонецПроцедуры

Процедура ОбработкаПодбора(Ном,Конт)
   //Если Ном.ТекущийЭлемент().ЭтоГруппа() = 1 тогда
   //    Предупреждение("Нельзя выбирать группы");
   //    Возврат;
   //КонецЕсли;
   Если (Таб.НайтиЗначение(Ном.ТекущийЭлемент(),,"Номенклатура") = 0) или (Ном.ТекущийЭлемент().ЭтоГруппа() = 0) тогда
       Таб.НоваяСтрока();
       Таб.Номенклатура = Ном.ТекущийЭлемент();
       Если флБазЕдИзм = 1 Тогда
           Таб.ЕдИзм = Таб.Номенклатура.БазоваяЕдиница;
       Иначе
           СпрЕдИзм = СоздатьОбъект("Справочник.Единицы");
           СпрЕдИзм.ИспользоватьВладельца(Таб.Номенклатура);
           СпрЕдИзм.ВыбратьЭлементы();
           Пока СпрЕдИзм.ПолучитьЭлемент() = 1 Цикл
               Если СпрЕдИзм.ТекущийЭлемент() <> Таб.Номенклатура.БазоваяЕдиница Тогда
                   Таб.ЕдИзм = СпрЕдИзм.ТекущийЭлемент();
                   Прервать;
               КонецЕсли;
               Если ПустоеЗначение(Таб.ЕдИзм) = 1 Тогда
                   Таб.ЕдИзм = Таб.Номенклатура.БазоваяЕдиница;
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
   Перем СпрФирм;
   Размер = 1;
   ДатаПечати = РабочаяДата();
   добНДС = 1;
   флБазЕдИзм = 1;
   пкОстатки = 1;

   флЗаглавными = 0;
   Таб.НоваяКолонка("Номенклатура","Справочник.Номенклатура");
   Таб.НоваяКолонка("ЕдИзм","Справочник.Единицы",,,"Ед.изм",7);
   Цена1 = Константа.РозничныйТипЦен;

   СпрФирм = СоздатьОбъект("Справочник.Фирмы");
   СпрФирм.ВыбратьЭлементы();
   Пока СпрФирм.ПолучитьЭлемент() = 1 Цикл
       ТекФирма.ДобавитьЗначение(СпрФирм.ТекущийЭлемент(), СпрФирм.ТекущийЭлемент().Наименование);
   КонецЦикла;
   
   Остатки = СоздатьОбъект("Регистр.ОстаткиТМЦ");

   ПриВыбореОстатка();
КонецПроцедуры
2 Mikeware
 
20.07.12
10:58
Ичо?
3 SeeWorld
 
20.07.12
11:00
Отсортировать по наим. получилось(Таб.Сортировать("+Номенклатура"); ), а по коду нет(
4 Zmich
 
20.07.12
11:02
(3). Добавь колонку Код в таблицу, заполни, отсортируй. Можно сделать Видимость(0), чтоб визуально она не отображалась.
5 SeeWorld
 
20.07.12
11:08
Где и как это сделать?(
6 SeeWorld
 
20.07.12
11:08
Код не нумерация строк, а код из справочника.номенклатура конкретного элемента.
7 SeeWorld
 
20.07.12
11:13
Форма выглядит так http://upwap.ru/2624673
8 Zmich
 
20.07.12
11:14
(5). В ПриОткрытии() рядом с

Таб.НоваяКолонка("Номенклатура","Справочник.Номенклатура");
Таб.НоваяКолонка("ЕдИзм","Справочник.Единицы",,,"Ед.изм",7);

добавь

Таб.НоваяКолонка("Код","Строка", 12); // 12 - Длина кода номенклатуры

везде в коде, где есть Таб.НоваяСтрока(), например,

Таб.НоваяСтрока();
Таб.Номенклатура= ТаблицаДокумента.Номенклатура;
Таб.ЕдИзм = ТаблицаДокумента.Единица;

добавляй строчку

Таб.Код = ТаблицаДокумента.Номенклатура.Код;

После этого можешь сортировать по колонке Код.
9 SeeWorld
 
20.07.12
11:17
10 Zmich
 
20.07.12
11:23
(7), (9) - для сортировки не важно, как они выглядят
11 SeeWorld
 
20.07.12
11:44
Таб.Код = ТаблицаДокумента<<?>>.Номенклатура.Код;
{D:\1C\EXTFORMS\AAA.ERT(57)}: Переменная не определена (ТаблицаДокумента)
Таб.Код = ТаблицаДокумента<<?>>.Номенклатура.Код;
{D:\1C\EXTFORMS\AAA.ERT(63)}: Переменная не определена (ТаблицаДокумента)
Таб.Код = ТаблицаДокумента<<?>>.Номенклатура.Код;
{D:\1C\EXTFORMS\AAA.ERT(419)}: Переменная не определена (ТаблицаДокумента)
Таб.Код = ТаблицаДокумента<<?>>.Номенклатура.Код;
{D:\1C\EXTFORMS\AAA.ERT(587)}: Переменная не определена (ТаблицаДокумента)
12 SeeWorld
 
20.07.12
11:45
Выдает ошибки
13 Zmich
 
20.07.12
11:49
(11). Слушай, ну если ты такую простую логику не можешь понять, то тут я тебе не помощник.
14 SeeWorld
 
20.07.12
12:02
Извини! Просто, пока вообще толком не разбираюсь в 1с. Очень тяжело. Сделал все как ты описал выше.
15 Zmich
 
20.07.12
12:09
(14). Ну естественно, если строки такие:

Таб.НоваяСтрока();
Таб.Номенклатура= ВремНоменклатура;
Таб.ЕдИзм = ТермДанные.Единица;

то надо добавлять

Таб.Код = ВремНоменклатура.Код;

В остальных по аналогии.
Что тут "тяжелого"?
16 SeeWorld
 
20.07.12
12:15
Блин, не внимательно посмотрел)
17 SeeWorld
 
20.07.12
12:56
в Колонке "Код" таб. знач. нет кода. Попробовал распечатать там пусто.
18 SeeWorld
 
20.07.12
16:11
19 SeeWorld
 
26.07.12
14:27
Я все правильно сделал?
20 SeeWorld
 
27.07.12
18:34
Помогите пожалуйста!(((
21 lals
 
27.07.12
23:36
Стучи в аську аська в личке
22 EvgeniuXP
 
27.07.12
23:54
(19) нет, не правильно, от такого решения тебе руки и ноги выдернут.
23 SeeWorld
 
28.07.12
18:04
Что, где и как сделать?(
24 VladZ
 
28.07.12
20:43
(0)

Если Размер = 1 Тогда
       МаксРяд = 3;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 2 тогда
       МаксРяд = 5;
       МаксСтолбик = 3;

Ёптить... Код из разряда "вырви глаз"...
25 VladZ
 
28.07.12
20:48
Отличный код! Чего здесь только нет! :)
26 SeeWorld
 
29.07.12
10:31
SOS
27 SeeWorld
 
29.07.12
10:39
Вот что я сделал, но не работает. Не пойму почему во внутреннем цикле не происходит добавление наименования в колонку "Номенклатура", а во внешнем все добавляется(
//Сортировка по коду и наименованию товара
Функция Списзнач(Отчет, Фирма, Номенклатура, ЕдИзм, Код, Столбик, Ряд) Экспорт  
   
СписНаимКод.НоваяСтрока();
СписНаимКод.Отчет = Отчет;
СписНаимКод.Фирма = Фирма;
СписНаимКод.Номенклатура = Номенклатура;
СписНаимКод.ЕдИзм = ЕдИзм;
СписНаимКод.Код = Код;
СписНаимКод.Столбик = Столбик;
СписНаимКод.Ряд = Ряд;  
КонецФункции    

//*******************************************
Процедура Сформировать()
   
   //Если ТекФирма.ТекущаяСтрока() = 1 тогда
   //    Фирма = "Открытое Акционерное Общество";
   //    Магазин = "РБС ""Прохладненская""";
   //иначеЕсли ТекФирма.ТекущаяСтрока() = 2 тогда
   //    Фирма = "ООО РБС";
   //    Магазин = "Магазин ""Продукты""";
   //иначеЕсли ТекФирма.ТекущаяСтрока() = 3 тогда
   //    Фирма = "ИП Омельченко И.Я.";
   //    Магазин = "< Продукты >";
   //иначеЕсли ТекФирма.ТекущаяСтрока() = 4 тогда
   //    Фирма = "ООО Мир продуктов";
   //    Магазин = "< Продукты >";
   //КонецЕсли;
   
   Отчет = СоздатьОбъект("Таблица");
   Отчет.ИсходнаяТаблица("Таблица"+Размер);
   Если Размер = 1 Тогда
       МаксРяд = 3;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 2 тогда
       МаксРяд = 5;
       МаксСтолбик = 3;
   иначеЕсли Размер = 3  тогда
       МаксРяд = 5;
       МаксСтолбик = 4;
   иначеЕсли Размер = 4  тогда
       МаксРяд = 3;
       МаксСтолбик = 1;
   иначеЕсли Размер = 5  тогда
       МаксРяд = 6;
       МаксСтолбик = 2;
   иначеЕсли Размер = 6  тогда
       МаксРяд = 3;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 7 Тогда
       МаксРяд = 2;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 8 Тогда
       МаксРяд = 2;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 9 Тогда
       МаксРяд = 8;
       МаксСтолбик = 1;
   ИначеЕсли Размер = 10 Тогда
       МаксРяд = 10;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 11 Тогда
       МаксРяд = 1;
       МаксСтолбик = 1;
   ИначеЕсли Размер = 12 Тогда
       МаксРяд = 9;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 13 Тогда
       МаксРяд = 8;
       МаксСтолбик = 2;
   ИначеЕсли Размер = 14 Тогда
       МаксРяд = 10;
       МаксСтолбик = 3;
   ИначеЕсли Размер = 15 Тогда
       МаксРяд = 14;
       МаксСтолбик = 5;
   ИначеЕсли Размер = 16 Тогда
       МаксРяд = 7;
       МаксСтолбик = 3;
   Иначе
       Предупреждение("Нет шаблона ценника", 3);
       Возврат;
   КонецЕсли;

   Если флОтступ = 1 тогда
       МаксРяд = Макс(1, Цел(МаксРяд / 3));
   КонецЕсли;
   
   Столбик = 1;
   Ряд     = 1;
   
   Ном = СоздатьОбъект("Справочник.Номенклатура");

   Таб.ВыбратьСтроки();
   Пока Таб.ПолучитьСтроку() = 1 Цикл
       Если Таб.Номенклатура.ЭтоГруппа() = 1 тогда
           Ном.ИспользоватьРодителя(Таб.Номенклатура);
           Ном.ВыбратьЭлементы();
           Пока Ном.ПолучитьЭлемент() = 1 цикл
               Если (Ном.ЭтоГруппа() = 0) и (Ном.ПометкаУдаления() = 0) тогда  
                   Если пкОстатки = 1 тогда
                       Если (ПустоеЗначение(Склад) = 1) тогда
                           Если (Остатки.СводныйОстаток(, Ном.ТекущийЭлемент(), ,  ,"Количество") <= 0) тогда
                               Продолжить;
                           КонецЕсли;
                       ИначеЕсли (ПустоеЗначение(Склад) = 0) тогда
                           Если (Остатки.СводныйОстаток(, Ном.ТекущийЭлемент(), Склад,  ,"Количество") <= 0) тогда
                               Продолжить;
                           КонецЕсли;    
                       КонецЕсли;
                   КонецЕсли;    
                   Фирма = ВернутьФирму(Ном);
                   Если (пкОстатки = 1) и (ПустоеЗначение(Фирма) = 1) Тогда
                       Фирма = ТекФирма.ТекущаяСтрока();
                   КонецЕсли;  
                   Списзнач(Отчет, Фирма, Ном, Ном.БазоваяЕдиница, Ном.Код, Столбик, Ряд);
                   
               КонецЕсли;
           КонецЦикла;
           Ном.ИспользоватьРодителя();
       иначе  
           
           Фирма = ВернутьФирму(Таб.Номенклатура);
           Списзнач(Отчет, Фирма, Таб.Номенклатура, Таб.ЕдИзм, Таб.Номенклатура.Код, Столбик, Ряд);
       КонецЕсли;
   КонецЦикла;
   Если СорПоНаим.ТекущаяСтрока()=2 Тогда
       СписНаимКод.Сортировать("+Номенклатура");
   ИначеЕсли СорПоНаим.ТекущаяСтрока()=3 Тогда
       СписНаимКод.Сортировать("-Номенклатура");
   КонецЕсли;
   Если СорПоКоду.ТекущаяСтрока()=2 Тогда
       СписНаимКод.Сортировать("+Код");
   ИначеЕсли СорПоКоду.ТекущаяСтрока()=3 Тогда
       СписНаимКод.Сортировать("-Код");
   КонецЕсли;            
   СписНаимКод.ВыбратьСтроки();
   Пока СписНаимКод.ПолучитьСтроку()=1 Цикл
         Табл = СписНаимКод.Отчет;
         Фирма = СписНаимКод.Фирма;
         Номенклатура = СписНаимКод.Номенклатура;
         ЕдИзм = СписНаимКод.ЕдИзм;
         Столбик = СписНаимКод.Столбик;
         Ряд = СписНаимКод.Ряд;
         ДобавитьЦенник(Табл, Фирма, Номенклатура, ЕдИзм, Столбик, Ряд);
   КонецЦикла;

   Отчет.Показать("Ценники "+?(пкОстатки = 0,"",?(ПустоеЗначение(Склад)=1," по всем складам "," по складу: "+Склад)));
КонецПроцедуры

Процедура ПоКнПодбор()
   ОткрытьПодбор("Справочник.Номенклатура","ДляВыбора",,1,);
КонецПроцедуры

Процедура ОбработкаПодбора(Ном,Конт)
   //Если Ном.ТекущийЭлемент().ЭтоГруппа() = 1 тогда
   //    Предупреждение("Нельзя выбирать группы");
   //    Возврат;
   //КонецЕсли;
   Если (Таб.НайтиЗначение(Ном.ТекущийЭлемент(),,"Номенклатура") = 0) или (Ном.ТекущийЭлемент().ЭтоГруппа() = 0) тогда
       Таб.НоваяСтрока();
       Таб.Номенклатура = Ном.ТекущийЭлемент();
       Если флБазЕдИзм = 1 Тогда
           Таб.ЕдИзм = Таб.Номенклатура.БазоваяЕдиница;
       Иначе
           СпрЕдИзм = СоздатьОбъект("Справочник.Единицы");
           СпрЕдИзм.ИспользоватьВладельца(Таб.Номенклатура);
           СпрЕдИзм.ВыбратьЭлементы();
           Пока СпрЕдИзм.ПолучитьЭлемент() = 1 Цикл
               Если СпрЕдИзм.ТекущийЭлемент() <> Таб.Номенклатура.БазоваяЕдиница Тогда
                   Таб.ЕдИзм = СпрЕдИзм.ТекущийЭлемент();
                   Прервать;
               КонецЕсли;
               Если ПустоеЗначение(Таб.ЕдИзм) = 1 Тогда
                   Таб.ЕдИзм = Таб.Номенклатура.БазоваяЕдиница;
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
   Перем СпрФирм;  
   
   СорПоНаим.ДобавитьЗначение("Наименование");
   СорПоНаим.ДобавитьЗначение("А-Я");
   СорПоНаим.ДобавитьЗначение("Я-А");
   СорПоКоду.ДобавитьЗначение("Код");
   СорПоКоду.ДобавитьЗначение("ПоВозрастанию");
   СорПоКоду.ДобавитьЗначение("ПоУбыванию");
                                             
   СписНаимКод.НоваяКолонка("Отчет");    
   СписНаимКод.НоваяКолонка("Фирма");
   СписНаимКод.НоваяКолонка("Номенклатура");
   СписНаимКод.НоваяКолонка("ЕдИзм");
   СписНаимКод.НоваяКолонка("Код");
   СписНаимКод.НоваяКолонка("Столбик");
   СписНаимКод.НоваяКолонка("Ряд");
   Размер = 1;
   ДатаПечати = РабочаяДата();
   добНДС = 1;
   флБазЕдИзм = 1;
   пкОстатки = 1;

   флЗаглавными = 0;
   Таб.НоваяКолонка("Номенклатура","Справочник.Номенклатура");
   Таб.НоваяКолонка("ЕдИзм","Справочник.Единицы",,,"Ед.изм",7);
   
   Цена1 = Константа.РозничныйТипЦен;

   СпрФирм = СоздатьОбъект("Справочник.Фирмы");
   СпрФирм.ВыбратьЭлементы();
   Пока СпрФирм.ПолучитьЭлемент() = 1 Цикл
       ТекФирма.ДобавитьЗначение(СпрФирм.ТекущийЭлемент(), СпрФирм.ТекущийЭлемент().Наименование);
   КонецЦикла;
   
   Остатки = СоздатьОбъект("Регистр.ОстаткиТМЦ");

   ПриВыбореОстатка();
   
КонецПроцедуры
28 Nirvana
 
29.07.12
12:04
(26) Тебе стоит начинать с более простых вещей.
Попробуй сперва просто перебирать справочник и обращаться к атрибутам элемента. А потом уже используй эти отработанные методы в рамках задач типа (0).
29 SeeWorld
 
29.07.12
12:26
Не пойму почему во внутреннем цикле не происходит добавление наименования в колонку "Номенклатура", а во внешнем все добавляется?(
30 SeeWorld
 
29.07.12
12:28
Если Таб.Номенклатура.ЭтоГруппа() = 1 тогда
           Ном.ИспользоватьРодителя(Таб.Номенклатура);
           Ном.ВыбратьЭлементы();
           Пока Ном.ПолучитьЭлемент() = 1 цикл
               Если (Ном.ЭтоГруппа() = 0) и (Ном.ПометкаУдаления() = 0) тогда  
                   Если пкОстатки = 1 тогда
                       Если (ПустоеЗначение(Склад) = 1) тогда
                           Если (Остатки.СводныйОстаток(, Ном.ТекущийЭлемент(), ,  ,"Количество") <= 0) тогда
                               Продолжить;
                           КонецЕсли;
                       ИначеЕсли (ПустоеЗначение(Склад) = 0) тогда
                           Если (Остатки.СводныйОстаток(, Ном.ТекущийЭлемент(), Склад,  ,"Количество") <= 0) тогда
                               Продолжить;
                           КонецЕсли;    
                       КонецЕсли;
                   КонецЕсли;    
                   Фирма = ВернутьФирму(Ном);
                   Если (пкОстатки = 1) и (ПустоеЗначение(Фирма) = 1) Тогда
                       Фирма = ТекФирма.ТекущаяСтрока();
                   КонецЕсли;  
                   Списзнач(Отчет, Фирма, Ном, Ном.БазоваяЕдиница, Ном.Код, Столбик, Ряд);
                   
               КонецЕсли;
           КонецЦикла;
           Ном.ИспользоватьРодителя();
       иначе  
           
           Фирма = ВернутьФирму(Таб.Номенклатура);
           Списзнач(Отчет, Фирма, Таб.Номенклатура, Таб.ЕдИзм, Таб.Номенклатура.Код, Столбик, Ряд);
       КонецЕсли;
31 SeeWorld
 
29.07.12
15:08
Помогите отсортировать
32 SeeWorld
 
29.07.12
15:12
помогите написать код где надо(
33 KRV
 
29.07.12
15:16
(участливо) тестовое задание?  )))
34 Vladal
 
29.07.12
15:16
Тебе в код

ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
ДокОснование.ВыгрузитьТабличнуюЧасть(ТаблицаДокумента,"Номенклатура,Количество,Единица");
ТаблицаДокумента.ВыбратьСтроки();
Пока ТаблицаДокумента.ПолучитьСтроку()=1 Цикл

Надо добавить строчку:

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

Потом делать, как советовали в (8)
35 Vladal
 
29.07.12
15:16
(33) Ты добрый и участливый.
36 KRV
 
29.07.12
15:23
(35) дык челу надо было в институте учиться, халява в жизни не катит... )))
37 Vladal
 
29.07.12
15:29
(36) Я в институтах академиев не кончал. Я жлектрик, есичо.
38 Vladal
 
29.07.12
15:30
(0) Читай внимательно учебник по 1С http://mista.ru/tutor_1c/index.htm
39 KRV
 
29.07.12
15:32
(37)  хых.. у меня пять неначатых высших и чо? )))
40 Vladal
 
29.07.12
16:15
(39) Ты хоть начал, я ж и не начинал.
41 SeeWorld
 
29.07.12
16:52
KRV, если я в языке хорошо разбирался я бы тебе помог и многим другим. Не знаю как ты, но я получаю удовольствие от того, что кому-то помог ...
42 Mikeware
 
29.07.12
16:53
(41) проблема не в знании языка...
кстати, для знания яхыка достаточно СП
43 SeeWorld
 
29.07.12
16:53
Vladal, я все правильно сделал?
ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
   ДокОснование.ВыгрузитьТабличнуюЧасть(ТаблицаДокумента,"Номенклатура,Количество,Единица");
   
   ТаблицаДокумента.ВыбратьСтроки();
   Пока ТаблицаДокумента.ПолучитьСтроку()=1 Цикл
       ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
       ДокОснование.ВыгрузитьТабличнуюЧасть(ТаблицаДокумента,"Номенклатура,Количество,Единица");
       ТаблицаДокумента.НоваяСтрока("Код");
       ТаблицаДокумента.ВыбратьСтроки();
       Пока ТаблицаДокумента.ПолучитьСтроку()=1 Цикл
       ВремНоменклатура = ТаблицаДокумента.Номенклатура;
       Если ВремНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга Тогда
           Продолжить;
       КонецЕсли;    
       
       Если  флКоличество = 1 Тогда
           КолНом = ТаблицаДокумента.Количество;
           Если ТаблицаДокумента.Единица.Наименование <> "ШТ." Тогда
               КолНом = 1;
           КонецЕсли;
           Для Сч = 1 По КолНом Цикл
               Таб.НоваяСтрока();
               Таб.Номенклатура= ТаблицаДокумента.Номенклатура;
               Таб.ЕдИзм = ТаблицаДокумента.Единица;
               Таб.Код = ТаблицаДокумента.Номенклатура.Код;
           КонецЦикла;
       Иначе
           Таб.НоваяСтрока();
           Таб.Номенклатура= ТаблицаДокумента.Номенклатура;
           Таб.ЕдИзм = ТаблицаДокумента.Единица;
           Таб.Код = ТаблицаДокумента.Номенклатура.Код;
       КонецЕсли;
       КонецЦикла;    
   КонецЦикла;
44 SeeWorld
 
29.07.12
16:56
Mikeware, расшифруй СП.
45 Mikeware
 
29.07.12
16:58
(44) Синтакс-помощник (встроенная справка по языку).
Хотя при желании в сети можно найти и отсканенные книжки с описанием языка.
46 SeeWorld
 
29.07.12
17:00
Ой, блин я ступил, Vladal забудь про (43)
47 SeeWorld
 
29.07.12
17:05
Vladal, что-то все равно не работает. Не заполняется колонка "Код".
48 Mikeware
 
29.07.12
17:07
(47) открой для себя существование отладчика...
49 SeeWorld
 
29.07.12
17:08
50 dedmoroz777
 
29.07.12
17:24
ТаблицаДокумента.НоваяСтрока("Код"); - это что такое?
51 dedmoroz777
 
29.07.12
17:25
Код, вообще трындец)
52 Mikeware
 
29.07.12
17:48
(50) Это ошибка. которая там же, где и всегда...
53 SeeWorld
 
29.07.12
22:33
Ура отсортировал!
54 SeeWorld
 
30.07.12
00:29
А теперь другая проблема(
55 SeeWorld
 
30.07.12
00:31
Скажите пожалуйста, почему у меня не заполняется в таблице значений "СписНаимКод" колонка "Номенклатура" наименованием товаров?
Таб.ВыбратьСтроки();
Пока Таб.ПолучитьСтроку() = 1 Цикл
Если Таб.Номенклатура.ЭтоГруппа() = 1 тогда
Ном.ИспользоватьРодителя(Таб.Номенклатура);
Ном.ВыбратьЭлементы();
Пока Ном.ПолучитьЭлемент() = 1 цикл
Если (Ном.ЭтоГруппа() = 0) и (Ном.ПометкаУдаления() = 0) тогда  
Если пкОстатки = 1 тогда
Если (ПустоеЗначение(Склад) = 1) тогда
Если (Остатки.СводныйОстаток(, Ном.ТекущийЭлемент(), ,  ,"Количество") <= 0) тогда
Продолжить;
КонецЕсли;
ИначеЕсли (ПустоеЗначение(Склад) = 0) тогда
Если (Остатки.СводныйОстаток(, Ном.ТекущийЭлемент(), Склад,  ,"Количество") <= 0) тогда
Продолжить;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Фирма = ВернутьФирму(Ном);
Если (пкОстатки = 1) и (ПустоеЗначение(Фирма) = 1) Тогда
Фирма = ТекФирма.ТекущаяСтрока();
КонецЕсли;  
СписНаимКод.НоваяСтрока();
СписНаимКод.Отчет = Отчет;
СписНаимКод.Фирма = Фирма;
Сообщить(Ном);                                //  <-- выводятся наименования
СписНаимКод.Номенклатура = Ном;               //  <-- не происходит заполнение колонки
СписНаимКод.ЕдИзм = Ном.БазоваяЕдиница;
СписНаимКод.Код = Ном.Код;
СписНаимКод.Столбик = Столбик;
СписНаимКод.Ряд = Ряд;
КонецЕсли;
КонецЦикла;
Ном.ИспользоватьРодителя();
иначе  
Фирма = ВернутьФирму(Таб.Номенклатура);
СписНаимКод.НоваяСтрока();
СписНаимКод.Отчет = Отчет;
СписНаимКод.Фирма = Фирма;
СписНаимКод.Номенклатура = Таб.Номенклатура;
СписНаимКод.ЕдИзм = Таб.ЕдИзм;
Сообщить(Таб.Номенклатура.Код);
СписНаимКод.Код = Таб.Номенклатура.Код;               //  <-- происходит заполнение колонки
СписНаимКод.Столбик = Столбик;
СписНаимКод.Ряд = Ряд;
КонецЕсли;
КонецЦикла;
//Сортировка по коду и наименованию товара
Если СорПоНаим.ТекущаяСтрока()=2 Тогда
СписНаимКод.Сортировать("+Номенклатура");
ИначеЕсли СорПоНаим.ТекущаяСтрока()=3 Тогда
СписНаимКод.Сортировать("-Номенклатура");
КонецЕсли;
Если СорПоКоду.ТекущаяСтрока()=2 Тогда
СписНаимКод.Сортировать("+Код");
ИначеЕсли СорПоКоду.ТекущаяСтрока()=3 Тогда
СписНаимКод.Сортировать("-Код");
КонецЕсли;            
СписНаимКод.ВыбратьСтроки();
Пока СписНаимКод.ПолучитьСтроку()=1 Цикл
   Табл = СписНаимКод.Отчет;
   Фирма = СписНаимКод.Фирма;
   Номенклатура = СписНаимКод.Номенклатура;
   ЕдИзм = СписНаимКод.ЕдИзм;
   Столбик = СписНаимКод.Столбик;
   Ряд = СписНаимКод.Ряд;
   ДобавитьЦенник(Табл, Фирма, Номенклатура, ЕдИзм, Столбик, Ряд);
   КонецЦикла;
   СписНаимКод.УдалитьСтроки();


Процедура ПриОткрытии()
Перем СпрФирм;  

СорПоНаим.ДобавитьЗначение("Наименование");
СорПоНаим.ДобавитьЗначение("А-Я");
СорПоНаим.ДобавитьЗначение("Я-А");
   СорПоКоду.ДобавитьЗначение("Код");
СорПоКоду.ДобавитьЗначение("ПоВозрастанию");
СорПоКоду.ДобавитьЗначение("ПоУбыванию");

СписНаимКод.НоваяКолонка("Отчет");    
СписНаимКод.НоваяКолонка("Фирма");
СписНаимКод.НоваяКолонка("Номенклатура");
СписНаимКод.НоваяКолонка("ЕдИзм");
СписНаимКод.НоваяКолонка("Код");
СписНаимКод.НоваяКолонка("Столбик");
СписНаимКод.НоваяКолонка("Ряд");

Размер = 1;
ДатаПечати = РабочаяДата();
добНДС = 1;
флБазЕдИзм = 1;
пкОстатки = 1;

флЗаглавными = 0;
Таб.НоваяКолонка("Номенклатура","Справочник.Номенклатура");
Таб.НоваяКолонка("ЕдИзм","Справочник.Единицы",,,"Ед.изм",7);

Цена1 = Константа.РозничныйТипЦен;

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

Остатки = СоздатьОбъект("Регистр.ОстаткиТМЦ");

ПриВыбореОстатка();

КонецПроцедуры
56 Oleg_Kag
 
30.07.12
06:32
СписНаимКод.Номенклатура = Ном.Наименование;
57 SeeWorld
 
30.07.12
08:16
Так пробовал, но тогда происходит заполнение всех строк колонки "Номенклатура" одним наименованием, а не наименованиями элементов подгруппы.http://upwap.ru/2673091
58 Oleg_Kag
 
30.07.12
09:04
Хорошо, пробуем так:
СписНаимКод.Номенклатура=Ном.ТекущийЭлемент();
59 SeeWorld
 
30.07.12
09:58
Oleg_Kag,ты не представляешь как ты мне помог. Огромное тебе спасибо! Ребятам тоже! Тему можно закрывать! Ура!)))
60 big
 
30.07.12
10:17
(0) сделай ценники во внешних формах (mxl), где будут указаны все данный об этом ценнике (наименование, кол-во по горизонтали и вертикали и т.д.) и загружай их в список. Чтобы не тыркать в кучу радиобаттонов, а выбирать из списка (таблицы)
Независимо от того, куда вы едете — это в гору и против ветра!