Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 09:16

Проблема со сворачиванием таблицы

Автор sanya33, 24 апр 2014, 08:49

0 Пользователей и 1 гость просматривают эту тему.

sanya33

Здравствуйте проблемка такая... Есть документ xls с колонками дата, номер, Склад, Контрагент, сырье, количество, сумма, ндс, сумма ндс.
При загрузки документа создаются документы по строчно. в документе ПОступление товаров и услуг
Например:
01.01.2001 | №2| Главный Склад | ООО Магазин | Мука |250| 2567руб| 0|0|
01.01.2001 | №2| Главный Склад | ООО Магазин | Тесто |250| 2567руб| 0|0|
01.01.2001 | №2| Главный Склад | ООО Магазин | Хлеб |250| 2567руб| 0|0|
01.01.2001 | №2| Главный Склад | ООО Магазин | Прироги |250| 2567руб| 0|0|

беда в том что должен создаваться один документ по данному контрагенту с перечисленным сырьем...а таких контрагентов много.
Какое сделать условие не могу сообразить....я новичек...не ругайтесь сильно...кто что знает подскажите пожалуйста...

wise

(0) проверяй если в новой строке Контрагент = Контрагенту в предыдущей строки, то создаёшь строку документа, а если НЕ равен, то записываешь документ и создаёшь новый документ и далее по плану.
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

markgenuine

Типа того должно быть:

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

ДокументПоступленияТиУ.Записать();

sanya33

Спасибо вам большое) буду пробовать)
Добавлено: 24 апр 2014, 10:03


        Для Каждого ТекСтрокаТЗ Из ТаблицаЗначений Цикл

                  
           СпрОСЭлемент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
         СпрОСЭлемент.Организация = Справочники.Организации.НайтиПоКоду("000000001");
          СпрОСЭлемент.Дата = ПолучитьДатуИзСтроки(ТекСтрокаТЗ.Дата) + 22*60*60;
         СпрОСЭлемент.ОтражатьВБухгалтерскомУчете = ИСТИНА;
         СпрОСЭлемент.ОтражатьВУправленческомУчете = ИСТИНА;
         СпрОСЭлемент.ОтражатьВНалоговомУчете = ИСТИНА;
         СпрОСЭлемент.Проведен = Истина;
         СпрОСЭлемент.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;
         СпрОСЭлемент.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(ТекСтрокаТЗ.Контрагент);
         СпрОСЭлемент.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000000197");
         СпрОСЭлемент.СкладОрдер = Справочники.Склады.НайтиПоНаименованию(ТекСтрокаТЗ.Склад);
         СпрОСЭлемент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
         СпрОСэлемент.КурсВзаиморасчетов = истина;
         СпрОСЭлемент.КратностьВзаиморасчетов = истина;
         СпрОСЭлемент.ВалютаДокумента =  Константы.ВалютаРегламентированногоУчета.Получить();
         СпрОСЭлемент.Комментарий  = Строка(ТекСтрокаТЗ.Номер);

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



КонецЦикла;



СветланаCC

Что то типа этого))

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

Тазовод)

СветланаCC

Вам же нужно делить контрагентам?
Тазовод)

sanya33

Цитата: СветланаCC от 24 апр 2014, 10:10
Вам же нужно делить контрагентам?

да...
Добавлено: 24 апр 2014, 10:33


Цитата: sanya33 от 24 апр 2014, 10:15
Цитата: СветланаCC от 24 апр 2014, 10:10
Вам же нужно делить контрагентам?

да...

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

так?)

СветланаCC

типа того

ПредыдущийКонтрагент = "";
Для Каждого СтрокаВашейТЗ Из ВашейТЗ Цикл
  Если СтрокаВашейТЗ.Контрагент<>ПредыдущийКонтрагент Тогда
     СпрОСЭлемент = Документы.ПоступленияТоваровИУслуг.СоздатьДокумент();
     СпрОСЭлемент.Организация = Справочники.Организации.НайтиПоКоду("000000001");
     СпрОСЭлемент.Дата = ПолучитьДатуИзСтроки(ТекСтрокаТЗ.Дата) + 22*60*60;
     СпрОСЭлемент.ОтражатьВБухгалтерскомУчете = ИСТИНА;
     СпрОСЭлемент.ОтражатьВУправленческомУчете = ИСТИНА;
     СпрОСЭлемент.ОтражатьВНалоговомУчете = ИСТИНА;
     СпрОСЭлемент.Проведен = Истина;
     СпрОСЭлемент.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;
     СпрОСЭлемент.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(ТекСтрокаТЗ.Контрагент);
     СпрОСЭлемент.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000000197");
     СпрОСЭлемент.СкладОрдер = Справочники.Склады.НайтиПоНаименованию(ТекСтрокаТЗ.Склад);
     СпрОСЭлемент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
     СпрОСэлемент.КурсВзаиморасчетов = истина;
     СпрОСЭлемент.КратностьВзаиморасчетов = истина;
     СпрОСЭлемент.ВалютаДокумента =  Константы.ВалютаРегламентированногоУчета.Получить();
     СпрОСЭлемент.Комментарий  = Строка(ТекСтрокаТЗ.Номер);
  КонецЕсли;
    НоваяСтрокаТовары = СпрОСЭлемент.Товары.Добавить();
          НоваяСтрокаТовары.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекСтрокаТЗ.Сырье);
          НоваяСтрокаТовары.Количество = Число(ТекСтрокаТЗ.Количество);
          НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("кг");
          НоваяСтрокаТовары.Сумма = Число(ТекСтрокаТЗ.Сумма);
          НоваяСтрокаТовары.Цена = Число(ТекСтрокаТЗ.Цена);
          НоваяСтрокаТовары.СтавкаНДС = Число(ТекСтрокаТЗ.НДС);// ставка ндс в документе используется как перечисление
          НоваяСтрокаТовары.СуммаНДС = Число(ТекСтрокаТЗ.СуммаНДС);
    СпрОСЭлемент.Записать();
    ПредыдущийКонтрагент = ТекСтрокаТЗ.Контрагент;
КонецЦикла;
Тазовод)

sanya33

Цитата: СветланаCC от 24 апр 2014, 11:24
типа того

ПредыдущийКонтрагент = "";
Для Каждого СтрокаВашейТЗ Из ВашейТЗ Цикл
  Если СтрокаВашейТЗ.Контрагент<>ПредыдущийКонтрагент Тогда
     СпрОСЭлемент = Документы.ПоступленияТоваровИУслуг.СоздатьДокумент();
     СпрОСЭлемент.Организация = Справочники.Организации.НайтиПоКоду("000000001");
     СпрОСЭлемент.Дата = ПолучитьДатуИзСтроки(ТекСтрокаТЗ.Дата) + 22*60*60;
     СпрОСЭлемент.ОтражатьВБухгалтерскомУчете = ИСТИНА;
     СпрОСЭлемент.ОтражатьВУправленческомУчете = ИСТИНА;
     СпрОСЭлемент.ОтражатьВНалоговомУчете = ИСТИНА;
     СпрОСЭлемент.Проведен = Истина;
     СпрОСЭлемент.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;
     СпрОСЭлемент.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(ТекСтрокаТЗ.Контрагент);
     СпрОСЭлемент.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000000197");
     СпрОСЭлемент.СкладОрдер = Справочники.Склады.НайтиПоНаименованию(ТекСтрокаТЗ.Склад);
     СпрОСЭлемент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
     СпрОСэлемент.КурсВзаиморасчетов = истина;
     СпрОСЭлемент.КратностьВзаиморасчетов = истина;
     СпрОСЭлемент.ВалютаДокумента =  Константы.ВалютаРегламентированногоУчета.Получить();
     СпрОСЭлемент.Комментарий  = Строка(ТекСтрокаТЗ.Номер);
  КонецЕсли;
    НоваяСтрокаТовары = СпрОСЭлемент.Товары.Добавить();
          НоваяСтрокаТовары.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТекСтрокаТЗ.Сырье);
          НоваяСтрокаТовары.Количество = Число(ТекСтрокаТЗ.Количество);
          НоваяСтрокаТовары.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("кг");
          НоваяСтрокаТовары.Сумма = Число(ТекСтрокаТЗ.Сумма);
          НоваяСтрокаТовары.Цена = Число(ТекСтрокаТЗ.Цена);
          НоваяСтрокаТовары.СтавкаНДС = Число(ТекСтрокаТЗ.НДС);// ставка ндс в документе используется как перечисление
          НоваяСтрокаТовары.СуммаНДС = Число(ТекСтрокаТЗ.СуммаНДС);
    СпрОСЭлемент.Записать();
    ПредыдущийКонтрагент = ТекСтрокаТЗ.Контрагент;
КонецЦикла;


Спасибо, Спасибо, Спасибо ОГРОМНОЕ!!!) Вы мне очень помогли) Здоровья ВАМ Крепкого не болейте)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск