Имя: Пароль:
1C
1С v8
Заполнить реквизит документа Реализации
, ,
0 Яна93
 
28.11.13
10:35
Всем привет. Помогите, пожалуйста с запросом.. В общем необходимо проставить персонального менеджера в реквизит документа который автоматически формируется при помощи обработки. Поле реквизита документа я назвала Ю_Менеджер. Аналогичное поле с заполненной фамилией менеджера добавлено и в справочник Контрагенты..хотелось бы, что бы он при формировании нового документа еще и подставлял фамилию менеджера который указан в этом справочнике Контрагенты.. Вот часть кода данной обработки:


Процедура     СформироватьДокументы(Знач ИмяДокумента, Знач БазаДляФормирования)
    
    Перем Запрос;
    Перем ПакетДанных;
    
    Перем ВыборкаШапкиДокументаКонтрагенты, ВыборкаШапкиДокументаДоговорыКонтрагентов, ВыборкаТоваров, ВыборкаУдаляемыхДокументов, ВыборкаУдаляемыхСчетФактур;
    
    Перем Документ;
    Перем СчетФактура;
        
    
    Состояние("Формирование документов вида: " +Метаданные.Документы[ИмяДокумента].Синоним);
    
    Запрос =Новый Запрос;
        
    Запрос.Текст ="ВЫБРАТЬ
                  |    БазаДляФормированияДокументов.Контрагент,
                  |    БазаДляФормированияДокументов.ДоговорКонтрагента,
                  |    БазаДляФормированияДокументов.ГрузополучательКонтрагент,
                  |    БазаДляФормированияДокументов.Склад,
                  |    БазаДляФормированияДокументов.Принципал,
                  |    БазаДляФормированияДокументов.СтавкаНДС,
                  |    БазаДляФормированияДокументов.ДоговорПринципала,
                  |    БазаДляФормированияДокументов.Номенклатура,
                  |    БазаДляФормированияДокументов.Количество,
                  |    БазаДляФормированияДокументов.СуммаСУчетомСкидки
                  |ПОМЕСТИТЬ БазаДляФормированияДокументов
                  |ИЗ
                  |    &БазаДляФормированияДокументов КАК БазаДляФормированияДокументов
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    Документы.Ссылка КАК Документ,
                  |    СчетФактураВыданный.Ссылка КАК СчетФактура
                  |ПОМЕСТИТЬ УдаляемыеДокументы
                  |ИЗ
                  |    &ИмяТаблициВидаФормируемогоДокумента КАК Документы
                  |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданный
                  |        ПО (СчетФактураВыданный.ДокументОснование = Документы.Ссылка)
                  |ГДЕ
                  |    Документы.Дата = НАЧАЛОПЕРИОДА(&КонецПериода, ДЕНЬ)
                  |    И Документы.ДатаНН = НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)
                  |    И Документы.ДатаКН = НАЧАЛОПЕРИОДА(&КонецПериода, ДЕНЬ)
                  |    И Документы.Комментарий ПОДОБНО ""Сформирован обработкой формирования документов""
                  |    И Документы.Контрагент В
                  |            (ВЫБРАТЬ
                  |                БазаДляФормированияДокументов.Контрагент
                  |            ИЗ
                  |                БазаДляФормированияДокументов)
                  |    И Документы.ДоговорКонтрагента В
                  |            (ВЫБРАТЬ
                  |                БазаДляФормированияДокументов.ДоговорКонтрагента
                  |            ИЗ
                  |                БазаДляФормированияДокументов)
                  |    И Документы.Номер ПОДОБНО &ПрефиксСчетФактуры + ""%""
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    МАКСИМУМ(НАЧАЛОПЕРИОДА(&КонецПериода, ДЕНЬ)) КАК Дата,
                  |    МАКСИМУМ(ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРеализацияТоваров.ПродажаКомиссия)) КАК ВидОперации,
                  |    МАКСИМУМ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)) КАК ДатаНН,
                  |    МАКСИМУМ(КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)) КАК ДатаКН,
                  |    МАКСИМУМ(&Организация) КАК Организация,
                  |    МАКСИМУМ(ИСТИНА) КАК ОтражатьВНалоговомУчете,
                  |    МАКСИМУМ(&БухСчет_6204) КАК СчетУчетаРасчетовСКонтрагентом,
                  |    МАКСИМУМ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоАвансамПолученным)) КАК СчетУчетаРасчетовПоАвансам,
                  |    ВЫРАЗИТЬ(БазаДляФормированияДокументов.Контрагент КАК Справочник.Контрагенты) КАК Контрагент,
                  |    ВЫРАЗИТЬ(БазаДляФормированияДокументов.ДоговорКонтрагента КАК Справочник.ДоговорыКонтрагентов) КАК ДоговорКонтрагента,
                  |    БазаДляФормированияДокументов.ГрузополучательКонтрагент КАК Грузополучатель,
                  |    МАКСИМУМ(&Грузоотправитель) КАК Грузоотправитель,
                  |    МАКСИМУМ(&Ответственный) КАК Ответственный,
                  |    ВЫРАЗИТЬ(БазаДляФормированияДокументов.ДоговорКонтрагента КАК Справочник.ДоговорыКонтрагентов).ВалютаВзаиморасчетов КАК ВалютаДокумента,
                  |    МАКСИМУМ(ИСТИНА) КАК УчитыватьНДС,
                  |    МАКСИМУМ(ИСТИНА) КАК СуммаВключаетНДС,
                  |    БазаДляФормированияДокументов.Склад,
                  |    БазаДляФормированияДокументов.Принципал,
                  |    БазаДляФормированияДокументов.СтавкаНДС,
                  |    БазаДляФормированияДокументов.ДоговорПринципала,
                  |    БазаДляФормированияДокументов.Номенклатура,
                  |    СУММА(БазаДляФормированияДокументов.Количество) КАК Количество,
                  |    СУММА(БазаДляФормированияДокументов.СуммаСУчетомСкидки) КАК Сумма,
                  |    СУММА(БазаДляФормированияДокументов.СуммаСУчетомСкидки / БазаДляФормированияДокументов.Количество) КАК Цена,
                  |    СУММА(ВЫРАЗИТЬ(ВЫБОР
                  |                КОГДА БазаДляФормированияДокументов.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС)
                  |                    ТОГДА 0
                  |                ИНАЧЕ БазаДляФормированияДокументов.СуммаСУчетомСкидки * 18 / 118
                  |            КОНЕЦ КАК ЧИСЛО(15, 2))) КАК СуммаНДС,
                  |    МАКСИМУМ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах)) КАК СчетУчета,
                  |    МАКСИМУМ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД)) КАК СчетДоходов,
                  |    МАКСИМУМ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД)) КАК СчетРасходов,
                  |    МАКСИМУМ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_НДС)) КАК СчетУчетаНДСПоРеализации,
                  |    МАКСИМУМ(""Сформирован обработкой формирования документов"") КАК Комментарий,
                  |    МАКСИМУМ(ЗНАЧЕНИЕ(Перечисление.СпособыЗачетаАвансов.Автоматически)) КАК СпособЗачетаАвансов
                  |ПОМЕСТИТЬ ДанныеДокументов
                  |ИЗ
                  |    БазаДляФормированияДокументов КАК БазаДляФормированияДокументов
                  |ГДЕ
                  |    ВЫБОР
                  |            КОГДА &ИмяФормируемогоДокумента В (&ИменаДокументовРаботающиеСНДС)
                  |                ТОГДА НЕ БазаДляФормированияДокументов.СтавкаНДС В (ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС), ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0), ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.ПустаяСсылка))
                  |            ИНАЧЕ БазаДляФормированияДокументов.СтавкаНДС В (ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС), ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0), ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.ПустаяСсылка))
                  |        КОНЕЦ
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ВЫРАЗИТЬ(БазаДляФормированияДокументов.Контрагент КАК Справочник.Контрагенты),
                  |    ВЫРАЗИТЬ(БазаДляФормированияДокументов.ДоговорКонтрагента КАК Справочник.ДоговорыКонтрагентов),
                  |    БазаДляФормированияДокументов.Склад,
                  |    БазаДляФормированияДокументов.Принципал,
                  |    БазаДляФормированияДокументов.СтавкаНДС,
                  |    БазаДляФормированияДокументов.ДоговорПринципала,
                  |    БазаДляФормированияДокументов.Номенклатура,
                  |    БазаДляФормированияДокументов.ГрузополучательКонтрагент,
                  |    ВЫРАЗИТЬ(БазаДляФормированияДокументов.ДоговорКонтрагента КАК Справочник.ДоговорыКонтрагентов).ВалютаВзаиморасчетов
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    ДанныеДокументов.Дата КАК Дата,
                  |    ДанныеДокументов.ВидОперации КАК ВидОперации,
                  |    ДанныеДокументов.ДатаНН КАК ДатаНН,
                  |    ДанныеДокументов.ДатаКН КАК ДатаКН,
                  |    ДанныеДокументов.Организация КАК Организация,
                  |    ДанныеДокументов.ОтражатьВНалоговомУчете КАК ОтражатьВНалоговомУчете,
                  |    ДанныеДокументов.СчетУчетаРасчетовСКонтрагентом КАК СчетУчетаРасчетовСКонтрагентом,
                  |    ДанныеДокументов.СчетУчетаРасчетовПоАвансам КАК СчетУчетаРасчетовПоАвансам,
                  |    ДанныеДокументов.Контрагент КАК Контрагент,
                  |    ДанныеДокументов.ДоговорКонтрагента КАК ДоговорКонтрагента,
                  |    ДанныеДокументов.Грузополучатель КАК Грузополучатель,
                  |    ДанныеДокументов.Грузоотправитель КАК Грузоотправитель,
                  |    ДанныеДокументов.Ответственный КАК Ответственный,
                  |    ДанныеДокументов.ВалютаДокумента КАК ВалютаДокумента,
                  |    ДанныеДокументов.УчитыватьНДС КАК УчитыватьНДС,
                  |    ДанныеДокументов.СуммаВключаетНДС КАК СуммаВключаетНДС,
                  |    ДанныеДокументов.Склад,
                  |    ДанныеДокументов.Принципал,
                  |    ДанныеДокументов.СтавкаНДС,
                  |    ДанныеДокументов.ДоговорПринципала,
                  |    ДанныеДокументов.Номенклатура,
                  |    ДанныеДокументов.Количество,
                  |    ДанныеДокументов.Сумма КАК Сумма,
                  |    ДанныеДокументов.Цена,
                  |    ДанныеДокументов.СуммаНДС,
                  |    ДанныеДокументов.СчетУчета,
                  |    ДанныеДокументов.СчетДоходов,
                  |    ДанныеДокументов.СчетРасходов,
                  |    ДанныеДокументов.СчетУчетаНДСПоРеализации,
                  |    ДанныеДокументов.Комментарий КАК Комментарий,
                  |    ДанныеДокументов.СпособЗачетаАвансов КАК СпособЗачетаАвансов
                  |ИЗ
                  |    ДанныеДокументов КАК ДанныеДокументов
                  |ИТОГИ
                  |    МАКСИМУМ(Дата),
                  |    МАКСИМУМ(ВидОперации),
                  |    МАКСИМУМ(ДатаНН),
                  |    МАКСИМУМ(ДатаКН),
                  |    МАКСИМУМ(Организация),
                  |    МАКСИМУМ(ОтражатьВНалоговомУчете),
                  |    МАКСИМУМ(СчетУчетаРасчетовСКонтрагентом),
                  |    МАКСИМУМ(СчетУчетаРасчетовПоАвансам),
                  |    МАКСИМУМ(Грузополучатель),
                  |    МАКСИМУМ(Грузоотправитель),
                  |    МАКСИМУМ(Ответственный),
                  |    МАКСИМУМ(ВалютаДокумента),
                  |    МАКСИМУМ(УчитыватьНДС),
                  |    МАКСИМУМ(СуммаВключаетНДС),
                  |    СУММА(Сумма),
                  |    МАКСИМУМ(Комментарий),
                  |    МАКСИМУМ(СпособЗачетаАвансов)
                  |ПО
                  |    Контрагент,
                  |    ДоговорКонтрагента
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    УдаляемыеДокументы.Документ,
                  |    УдаляемыеДокументы.СчетФактура КАК СчетФактура
                  |ИЗ
                  |    УдаляемыеДокументы КАК УдаляемыеДокументы
                  |ИТОГИ ПО
                  |    СчетФактура
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |УНИЧТОЖИТЬ ДанныеДокументов
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |УНИЧТОЖИТЬ УдаляемыеДокументы";
    Запрос.Текст =СтрЗаменить(Запрос.Текст, "&ИмяТаблициВидаФормируемогоДокумента", "Документ." +ИмяДокумента);
                  
    Запрос.УстановитьПараметр("НачалоПериода",                     НачалоПериода);
    Запрос.УстановитьПараметр("КонецПериода",                     КонецПериода);
    Запрос.УстановитьПараметр("Организация",                     Организация);
    Запрос.УстановитьПараметр("БухСчет_6204",                     ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.04") );
    Запрос.УстановитьПараметр("Грузоотправитель",                 Грузоотправитель);
    Запрос.УстановитьПараметр("Ответственный",                     ПараметрыСеанса.ТекущийПользователь);
    Запрос.УстановитьПараметр("БазаДляФормированияДокументов",     БазаДляФормирования);
    Запрос.УстановитьПараметр("ПрефиксСчетФактуры",             ПрефиксСчетФактуры+РазделительПрефиксаИНомера);
    Запрос.УстановитьПараметр("ИмяФормируемогоДокумента",         ИмяДокумента);
    Запрос.УстановитьПараметр("ИменаДокументовРаботающиеСНДС",     мИменаДокументовРаботающиеСНДС);
    Запрос.УстановитьПараметр("ИменаДокументовОтражаемыеНаЗабалансовомСчете",     ИменаДокументовОтражаемыеНаЗабалансовомСчете);
    
    
    ПакетДанных =Запрос.ВыполнитьПакет();
    ВыборкаШапкиДокументаКонтрагенты     =ПакетДанных[3].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    ВыборкаУдаляемыхСчетФактур            =ПакетДанных[4].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаУдаляемыхСчетФактур.Следующий() Цикл
        
        Если ВыборкаУдаляемыхСчетФактур.СчетФактура <> Null Тогда
            Сообщить("Удаление " +ВыборкаУдаляемыхСчетФактур.СчетФактура, СтатусСообщения.Внимание);
            ВыборкаУдаляемыхСчетФактур.СчетФактура.ПолучитьОбъект().Удалить()
        КонецЕсли;
        
        ВыборкаУдаляемыхДокументов =ВыборкаУдаляемыхСчетФактур.Выбрать();
        Пока ВыборкаУдаляемыхДокументов.Следующий() Цикл
            Сообщить("Удаление " +ВыборкаУдаляемыхДокументов.Документ, СтатусСообщения.Внимание);
            ВыборкаУдаляемыхДокументов.Документ.ПолучитьОбъект().Удалить();
            
            ОбработкаПрерыванияПользователя()
        КонецЦикла;
        
        ОбработкаПрерыванияПользователя()
    КонецЦикла;
    ОбновитьНумерациюОбъектов(Метаданные.Документы[ИмяДокумента]);
                              
    
    Пока ВыборкаШапкиДокументаКонтрагенты.Следующий() Цикл
        
        ВыборкаШапкиДокументаДоговорыКонтрагентов =ВыборкаШапкиДокументаКонтрагенты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ВыборкаШапкиДокументаДоговорыКонтрагентов.Следующий() Цикл
        
            Документ =Документы[ИмяДокумента].СоздатьДокумент();
            Документ.Номер =ПолучитьНомерНовогоДокумента(ИмяДокумента);
                                    
            ЗаполнитьЗначенияСвойств(Документ, ВыборкаШапкиДокументаДоговорыКонтрагентов);
                        
            ВыборкаТоваров =ВыборкаШапкиДокументаДоговорыКонтрагентов.Выбрать();
            Пока ВыборкаТоваров.Следующий() Цикл
                ЗаполнитьЗначенияСвойств(Документ.Товары.Добавить(), ВыборкаТоваров)
            КонецЦикла;
            
            
            Попытка
                Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный)
            Исключение
                Попытка
                    Документ.Записать(РежимЗаписиДокумента.Запись)
                Исключение
                    ВызватьИсключение ИмяДокумента +" по номером " +Документ.Номер +" уже существует"
                КонецПопытки
            КонецПопытки;
            
            
            СчетФактура =Документы.СчетФактураВыданный.СоздатьДокумент();
            СчетФактура.Заполнить(Документ.Ссылка);
            СчетФактура.ВидСчетаФактуры =Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию;
            СчетФактура.Номер             =Документ.Номер;
            СчетФактура.Записать( ?( Документ.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись), РежимПроведенияДокумента.Неоперативный);
            
            Сообщить("Сформирован документ " +Документ.Ссылка +", он " +Формат(Документ.Проведен, "БЛ='не проведен'; БИ=проведен") +" и " +СчетФактура.Ссылка);
            
            ОбработкаПрерыванияПользователя()
        КонецЦикла
    КонецЦикла;
    
КонецПроцедуры
1 Альбатрос
 
28.11.13
10:42
а что это бухгалтер занимается программированием?
2 Aprobator
 
28.11.13
10:45
охренеть.
3 Холодильник
 
28.11.13
10:47
после
       ЗаполнитьЗначенияСвойств(Документ, ВыборкаШапкиДокументаДоговорыКонтрагентов);
написать
Документ.Ю_Менеджер = ВыборкаШапкиДокументаДоговорыКонтрагентов.Контрагент.Ю_Менеджер
4 Холодильник
 
28.11.13
10:48
но удалять непосредственно и программно документы - сильно..
пользователи еще не поседели?
5 Яна93
 
28.11.13
10:48
Потому, что нету программиста) за мизерные деньги ни один уважающий себя программист не станет даже просто просиживать штаны... (1)
6 Яна93
 
28.11.13
10:49
(3) Сейчас попробую;)
7 zakidonoff
 
28.11.13
10:49
(5) Можно не просиживать - найти на удалёнку.
8 craxx
 
28.11.13
10:50
(5) а уважающий себя бухгалтер будет?
9 Wobland
 
28.11.13
10:51
(5) "за такие деньги я готов ничего не делать и даже немного вредить"
10 Холодильник
 
28.11.13
10:52
пригласите приходящего студента, он вам за 300р/ч свернет горы. ну и базы свернет, хотя бы по крайней мере не будет удалять непосредственно документы
11 Яна93
 
28.11.13
10:53
(3) Спасииибо ОГРОМНОЕ!!! Сработало)
12 Яна93
 
28.11.13
10:55
(8) А мне деваться некуда) везде нужен хороший стаж) поэтому стараюсь на практике учиться по максимуму)
13 Яна93
 
28.11.13
10:55
(9) =))))
14 Холодильник
 
28.11.13
10:57
какая однако продвинутая девушка.. "Интересно все новое"

Девушка, вашей маме зять не нужен?
15 Яна93
 
28.11.13
11:08
(14) Ну это к маме вопрос))) передам xD
16 Aprobator
 
28.11.13
12:09
(3) решение конечно работающее, но дурное. ИМХО, в запросе получить значение реквизита было бы правильнее.
17 Холодильник
 
28.11.13
12:15
(16) да, можно и так. я делал как мне проще