На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
  
> Работа с датами
    Как можно строку "08 сентября 2015" передать как дату в 1С? Я читал что можно скормить такой формат : ГГГГММДДччммсс’ или ‘ГГГГ.ММ.ДД:чч:чч:сс’ или разделенный запятыми. Неужели нужно строку вручную парсить? В Delphi например такая строка скармливается хорошо.
      Ну тут все намного хуже. Можно через СтрЗаменить поизгаляться, меняя строку месяца на число, потом уже проще.
        фигово. простые операции занимают много времени :(

        Чтобы не плодить тему ещё возник вопрос:
        1
        Бухгалтерия 3,0 управляемые формы, на форме ряд реквизитов и 2 кнопки. По 1-й кнопке данные заполняют реквизиты(с возможностью редактирования пользователем), по 2-й обрабатываются. Среди получаемых данных есть 2-х мерный массив строк. В какой реквизит формы мне проще всего загрузить этот массив? Или если это трудно, то как мне из одной процедуры, в которой формируются данные передать данные в другую, если 2-я процедура должна запускаться по кнопке 2?

        2 Создаю документ реализацию товаров и услуг.
        Никак не удается передать банковский счет организации, даже по коду
        ExpandedWrap disabled
          НовыйДок.БанковскийСчетОрганизации = Справочники.БанковскиеСчета.НайтиПоКоду("40702810555050110387");

        То-же самое и с
        ExpandedWrap disabled
          НовыйДок.ВидЭлектронногоДокумента = Перечисления.ВидыЭД.ТОРГ12;
        Их нужно передавать уже в созданный документ?
          Цитата ^D^ima @
          Среди получаемых данных есть 2-х мерный массив строк. В какой реквизит формы мне проще всего загрузить этот массив?

          Создай реквизит с типом ТаблицаЗначений
          Цитата ^D^ima @
          2 Создаю документ реализацию товаров и услуг.

          А полный кусок кода? Там значения в создаваемый документ надо передавать через параметры открытия формы.
            Цитата evGenius @
            А полный кусок кода? Там значения в создаваемый документ надо передавать через параметры открытия формы.

            ExpandedWrap disabled
              &НаСервере
              процедура РаботаНаСервере(ФормаПолучатель,ФормаДатаОтгрузки,ФормаОбщаяСуммаДокумента,ФормаНомерСчета , МаксТовара ,ЕстьТовары, ЕстьУслуги, ТЗ);
                  
                  НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
                  
                  НовыйДок.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",ФормаИНН);
                  НовыйДок.Ответственный = Пользователи.ТекущийПользователь();
                  НовыйДок.Комментарий ="накладная № "+ФормаНомерДокумента +" от "+ФормаДатаОтгрузки;
                  НовыйДок.Организация =Справочники.Организации.ОрганизацияПоУмолчанию(Пользователи.ТекущийПользователь());
                  
                  
                  НовыйДок.Дата = ТекущаяДата();//Дата(ДатаОтгрузки);
                  НовыйДок.УстановитьНовыйНомер();
                  НовыйДок.ВалютаДокумента  = Справочники.Валюты.НайтиПоНаименованию("руб.");
                  НовыйДок.БанковскийСчетОрганизации = Справочники.БанковскиеСчета.НайтиПоКоду("40702810555050110387");// БанковскиеСчетаОрганизации(НовыйДок.Организация,НовыйДок.ВалютаДокумента
                  НовыйДок.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;
                  НовыйДок.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
                  НовыйДок.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");
                  НовыйДок.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПоследним);
                  НовыйДок.ДокументБезНДС = истина;
                  //???НовыйДок.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("Дата",Дата(ФормаДатаДоговора));
                  НовыйДок.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("Номер",ФормаНомерСчета);
               
                  
                  если (ЕстьТовары = истина ) и (ЕстьУслуги = истина) тогда
                        НовыйДок.ВидОперации =Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия;
                        НовыйДок.ВидЭлектронногоДокумента = Перечисления.ВидыЭД.ТОРГ12;
                      Иначе если  ЕстьТовары = истина тогда
                            НовыйДок.ВидОперации =Перечисления.ВидыОперацийРеализацияТоваров.Товары;
                            НовыйДок.ВидЭлектронногоДокумента = Перечисления.ВидыЭД.ТОРГ12;
                            Иначе если ЕстьУслуги = истина тогда
                                НовыйДок.ВидОперации =Перечисления.ВидыОперацийРеализацияТоваров.Услуги;
                                НовыйДок.ВидЭлектронногоДокумента = Перечисления.ВидыЭД.АктВыполненныхРабот;
                          КонецЕсли;
                          
                      КонецЕсли;
                      
                  КонецЕсли;
               
                  
                  Для сч=1 по МаксТовара цикл
                      
                      если ТЗ[сч][4] =истина тогда
                          НовыйТовар = НовыйДок.Товары.Добавить();
                          НовыйТовар.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТЗ[сч][0]);
                          НовыйТовар.Количество = ТЗ[сч][1];
                          НовыйТовар.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                          НовыйТовар.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Готовая продукция");
                          НовыйТовар.СчетУчета = ПланыСчетов.Хозрасчетный.НайтиПоКоду("43");
                          НовыйТовар.СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
                          НовыйТовар.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
                          НовыйТовар.Цена = ТЗ[сч][2];
                          НовыйТовар.Сумма =ТЗ[сч][3];
                          
                      КонецЕсли;
                  КонецЦикла;
                  
                  Если ЕстьУслуги = истина тогда
                      НовыйУслуги = НовыйДок.Услуги.Добавить();
                      НовыйУслуги.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Услуги IT (Ингит)");
                      НовыйУслуги.Содержание = НовыйУслуги.Номенклатура;
                      НовыйУслуги.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                      НовыйУслуги.СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
                      НовыйУслуги.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
                      НовыйУслуги.Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа");
                      
                      Для сч=1 по МаксТовара цикл
                          если ТЗ[сч][4] = ложь тогда
                              НовыйУслуги.Сумма = НовыйУслуги.Сумма + ТЗ[сч][3];
                              Сообщить(ТЗ[сч][3]);
                          КонецЕсли;
                      КонецЦикла;
                      НовыйУслуги.Цена = НовыйУслуги.Сумма;
                  КонецЕсли;
               
                    
                    НовыйДок.Записать(РежимЗаписиДокумента.Проведение);
               
                  
                  
               
              КонецПроцедуры
              Цитата ^D^ima @
              НовыйДок.БанковскийСчетОрганизации = Справочники.БанковскиеСчета.НайтиПоКоду("40702810555050110387");

              Не понял при чем тут Найти по коду??? Номер счета хранится не в коде, а в реквизите НомерСчета. И этот реквизит не индексируется, так что НАйтиПоРеквизиту тоже не пройдет. Ищи запросом, при этом ограничивай владельцем и банком.
              Сообщение отредактировано: Rust -
                Rust
                а НовыйДок.ВидЭлектронногоДокумента = Перечисления.ВидыЭД.ТОРГ12; или НовыйДок.ВидЭлектронногоДокумента = Перечисления.ВидыЭД.АктВыполненныхРабот; не вставляется тоже в документ, там просто пусто. Как добавить этот реквизит в новый документ?
                  В модуле формы ФормаДокументаОбщая есть такой кусок кода

                  ExpandedWrap disabled
                    &НаСервере
                    Процедура УстановитьВидЭД()
                        
                        ДоступныеЗначения = Документы.РеализацияТоваровУслуг.ПолучитьДоступныеВидыЭдПоВидуОперации(Объект.ВидОперации);
                        
                        Элементы.ВидЭД.СписокВыбора.Очистить();
                        Для Каждого ЭлементСписка Из ДоступныеЗначения Цикл
                            Элементы.ВидЭД.СписокВыбора.Добавить(ЭлементСписка.Значение, ЭлементСписка.Представление);
                        КонецЦикла;
                        
                        Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
                            Объект.ВидЭлектронногоДокумента = Документы.РеализацияТоваровУслуг.ПолучитьВидЭдПоУмолчанию(Объект.ВидОперации);
                        КонецЕсли;
                        
                    КонецПроцедуры


                  Дальше обращаем внимание на модуль менеджера документа на следующие функции

                  ExpandedWrap disabled
                    Функция ПолучитьДоступныеВидыЭдПоВидуОперации(ВидОперации) Экспорт
                        
                        Результат = Новый СписокЗначений;
                        Если ВидОперации <> Перечисления.ВидыОперацийРеализацияТоваров.Услуги Тогда
                            Результат.Добавить(Перечисления.ВидыЭД.ТОРГ12Продавец, "ТОРГ-12");
                        КонецЕсли;
                        Если ВидОперации <> Перечисления.ВидыОперацийРеализацияТоваров.Товары
                            И ВидОперации <> Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности Тогда
                            Результат.Добавить(Перечисления.ВидыЭД.АктИсполнитель, "Акт об оказании услуг");
                        КонецЕсли;
                        Результат.Добавить(Перечисления.ВидыЭД.АктНаПередачуПрав, "Акт на передачу прав");
                        
                        Возврат Результат;
                        
                    КонецФункции


                  и еще

                  ExpandedWrap disabled
                    Функция ПолучитьВидЭдПоУмолчанию(ВидОперации) Экспорт
                        
                        Если ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Услуги Тогда
                            Возврат Перечисления.ВидыЭД.АктИсполнитель;
                        Иначе
                            Возврат Перечисления.ВидыЭД.ТОРГ12Продавец;
                        КонецЕсли;
                        
                    КонецФункции


                  Попробуй использовать в своем коде эти типовые функции
                    Rust
                    :wacko: и в какой последовательности мне их вызывать?
                      Выполни вот этот кусок кода после установки вида операции

                      ExpandedWrap disabled
                         Объект.ВидЭлектронногоДокумента = Документы.РеализацияТоваровУслуг.ПолучитьВидЭдПоУмолчанию(Объект.ВидОперации);
                        Цитата Rust @
                        Выполни вот этот кусок кода после установки вида операции

                        Работает!

                        Цитата Rust @
                        Номер счета хранится не в коде, а в реквизите НомерСчета.

                        Работает!

                        респектую :thanks:
                          Наверно последний вопрос - как мне открыть на экран только что созданный документ? гугление не осилил...
                            Цитата ^D^ima @
                            Наверно последний вопрос - как мне открыть на экран только что созданный документ? гугление не осилил...

                            Главный момент в том, что это надо сделать на клиенте, а не на сервере. Создай процедурку на клиенте и вызови из нее серверную функцию, а потом на клиенте Док.ПолучитьФорму("ИмяФормы").Открыть()
                              спасибо
                              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0447 ]   [ 14 queries used ]   [ Generated: 17.07.25, 23:43 GMT ]