7.7 СозданиеДокумента 1С 7.7 помощь

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Z-bob, 11 ноя 2013.

  1. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, помогите мне с кодом. Первый раз сталкиваюсь с 1с 7.7.
    Надо в поле "Начальная цена" заполнить данными взятых из экзель.
    Открываю экзель
    Код:
     Excel = СоздатьОбъект("Excel.Application"); 
    
    Excel.Workbooks.Open("C:\Users\user\Desktop\осн средства - копия");
    
    Книга = Excel.ActiveWorkbook;
    
    Строк = Excel.Cells.CurrentRegion.Rows.Count;
    
    Для х = 1 По Строк Цикл 
    Потом я создаю документ
    Код:
    СоздатьДокумент = СоздатьОбъект("Документ.ПереоценкаФиксированныхАктивов");
    Пишу так:
    Код:
    СпрТМЦ = СоздатьОбъект("Документ.ПереоценкаФиксированныхАктивов.ТабличнаяЧасть.ТМЦ");
    и выходит ошибка:
    СпрТМЦ = СоздатьОбъект("Документ.ПереоценкаФиксированныхАктивов.ТабличнаяЧасть.ТМЦ");
    подскажите как провильно писать
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    Док = СоздатьОбъект("Документ.ПереоценкаФиксированныхАктивов");
    Док.Новый();
    Док.РеквизитьТакойТо=ПеременнаяСякая; //заполняем шапку
    ....
    Для х = 1 По Строк Цикл
    Док.НоваяСтрока(); //табличная часть
    Док.РеквизитТЧ=РеквизитИзXLS№;
    ...
    КонецЦикла;
    
  3. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Все получилось, спасибо Вам, только есть одно "но".
    Обработка создает документ, в списке выходит, но когда открываю документ для просмотра там натуральная "каша", все на друг друга полезло...

    пока без цикла хотел проверить, вот код:
    Код:
    Процедура Сформировать()		  
    //Создаем ОЛЕ подключение к Excel
    Excel = СоздатьОбъект("Excel.Application"); 
    
    //Открываем файл
    Excel.Workbooks.Open("C:\Users\user\Desktop\осн средства - копия");
    
    //Открываем активную книгу
    Книга = Excel.ActiveWorkbook;
    
    //Получааем количество строк в книге
    Строк = Excel.Cells.CurrentRegion.Rows.Count;
    
    
    
    //Перебираем строки и обрабатываем данные
    
    //Для х = 1 По Строк Цикл
    Док = СоздатьОбъект("Документ.ПриемкаПередачаФиксированныхАктивов");
    Док.Новый();
    // Док.РеквизитьТакойТо=ПеременнаяСякая; //заполняем шапку
    АФ РГКП "ЦСМ"МЗ РК
    Док.НоваяСтрока(); //табличная часть
    Док.Наименование=СокрЛП(Строка(Excel.Cells(1, 2).Value));
    Док.НачальнаяСтоимость=Число(Excel.Cells(1, 5).Value);
    Док.ДатаВвода= ТекущаяДата;
    Док.ВидНоменклатуры="Фиксированный актив";
    Док.Записать();
    // КонецЦикла;
    Excel.Workbooks.Close();
    КонецПроцедуры

    Вложения:

  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Зря закомментировали заполнение реквизитов шапки. Потому что они не заполнены правильно - у вас такая каша.
    В модуле формы документа в процедуре ВводНового посмотрите как нужно заполнять....
  5. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    вот код, который в модуле формы документа:
    Код:
    Процедура ОбработкаПроведения()
    
    // Ввод нового объекта или объекта после монтажа (кап. строительства)
    Если (ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводНовогоОбъекта) или
    (ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.Аренда) или
    (ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводОбъектаПослеМонтажаСтроительства) Тогда
    
    СписокОбязательныхРеквизитов  = "Организация, ТМЦ, ГруппаФА, ВидАктива, ВидНоменклатуры, Счет";
    Если НачислятьАмортизацию = 1 Тогда
    СписокОбязательныхРеквизитов = СписокОбязательныхРеквизитов + ",СчетЗатрат, СпособНачисленияАмортизации";
    КонецЕсли;
    // проверка на заполнение обязательных реквизитов
    Если глКлючевыеРеквизитыДокумента(Операция, СписокОбязательныхРеквизитов) = 0 Тогда
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    
    // Позиционируемся на элементе справочника,
    СпрФА = СоздатьОбъект("Справочник." + СокрЛП(ТМЦ.Вид()));
    СпрФА.НайтиЭлемент(ТМЦ);
    
    // устанавливаем значения реквизитов справочника
    Для а = 1 По Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки() Цикл
    // если такого реквизита в справочнике нет, просто не выполняем действие
    Попытка
    
    Если Метаданные.Справочник(СокрЛП(ТМЦ.Вид())).Реквизит(Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки(а).Идентификатор).Периодический = 1 Тогда
    // если реквизит "Субконто", назначаем тип реквизита при установке
    Если Лев(Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки(а).Идентификатор, 8) = "Субконто" Тогда
    УстановитьРеквизитСправочника(СпрФА, Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки(а).Идентификатор,
    ПолучитьАтрибут(Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки(а).Идентификатор),
    ДатаДок, СчетЗатрат.ВидСубконто( Число(Прав(Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки(а).Идентификатор, 1)) ));
    Иначе
    УстановитьРеквизитСправочника(СпрФА, Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки(а).Идентификатор,
    ПолучитьАтрибут(Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки(а).Идентификатор), ДатаДок);
    КонецЕсли;
    Иначе
    СпрФА.УстановитьАтрибут(Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки(а).Идентификатор,
    ПолучитьАтрибут(Метаданные.Документ(СокрЛП(Вид())).РеквизитШапки(а).Идентификатор));
    КонецЕсли;
    
    Исключение
    КонецПопытки;
    КонецЦикла;
    
    СпрФА.Код	  = Код;
    СпрФА.Наименование = Наименование;
    СпрФА.Организация  = Организация;
    Попытка
    СпрФА.Записать();	  
    Исключение  
    глСообщить(Операция, "Неудачная попытка записи элемента "+ СокрЛП(СпрФА.Наименование)+". Возможно, объект заблокирован...","!");  
    КонецПопытки;
    КонецЕсли;		  
    
    
    Если (ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.Аренда) и (НачальнаяСтоимость > 0) Тогда
    СчетДт = ?(ТМЦ.Счет.Забалансовый = 0, СчетПоКоду("Х01"),ТМЦ.Счет);
    глПроводка( Операция, СчетДт, глСубконто(ТМЦ, Подразделение, )
    , , ,
    , НачальнаяСтоимость, , , "Принят арендованный ФА", "ФА", Организация, 1);
    // Ввод объекта после ремонта или объекта после монтажа (кап. строительства)
    ИначеЕсли (ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводОбъектаПослеРемонта) или
    (ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводОбъектаПослеМонтажаСтроительства) Тогда
    
    Если ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводОбъектаПослеМонтажаСтроительства Тогда
    // проверка на заполнение обязательных реквизитов
    Если глКлючевыеРеквизитыДокумента(Операция, "Подразделение") = 0 Тогда
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    Аналитика  = Подразделение;
    Содержание = "Ввод в эксплуатацию объекта после монтажа";
    Иначе
    Аналитика  = глПолучитьПодразделениеФА(Организация, ТМЦ, ТекущийДокумент());
    Содержание = "Ввод в эксплуатацию объекта после ремонта";
    КонецЕсли;
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    
    глПроводка( Операция, ТМЦ.Счет, глСубконто(ТМЦ, Аналитика, )
    , СчетПоКоду("293") , глСубконто(ТМЦ, ВидЗатрат, ),
    , Сумма, , , "Затраты по ремонту объекта", "ФА", Организация, 1);
    
    КонецЦикла;
    
    Если ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводОбъектаПослеРемонта Тогда
    // очищаем все реквизиты, кроме реквизитов слоя "Таблица" на случай, если акт использовался для другой операции
    Для а = 1 По Метаданные.Документ("ПриемкаПередачаФиксированныхАктивов").РеквизитШапки() Цикл
    Если (Метаданные.Документ("ПриемкаПередачаФиксированныхАктивов").РеквизитШапки(а).Идентификатор = "ВидОперацииНадОбъектом") или
    (Метаданные.Документ("ПриемкаПередачаФиксированныхАктивов").РеквизитШапки(а).Идентификатор = "Организация") или
    (Метаданные.Документ("ПриемкаПередачаФиксированныхАктивов").РеквизитШапки(а).Идентификатор = "ТМЦ") Тогда
    Продолжить;
    КонецЕсли;
    УстановитьАтрибут(Метаданные.Документ("ПриемкаПередачаФиксированныхАктивов").РеквизитШапки(а).Идентификатор, "");
    КонецЦикла;
    КонецЕсли;
    
    КонецЕсли;
    
    Если глЗаписатьОперацию(Операция, Содержание, Итог("Сумма"), 1) = 0 Тогда
    СтатусВозврата(0);
    Возврат;
    КонецЕсли; 
    
    КонецПроцедуры
    вот только здесь про новый документ говориться:
    Код:
    Процедура ОбработкаПроведения()
    // Ввод нового объекта или объекта после монтажа (кап. строительства)
    Если (ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводНовогоОбъекта) или
    (ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.Аренда) или
    (ВидОперацииНадОбъектом = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводОбъектаПослеМонтажаСтроительства) Тогда
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В модуле проведения... Будьте внимательны! Я сказал модуле формы.
    Кн. форма, закладка модуль если так уж конкретно
  7. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    извините, щас)

    вот:
    Код:
    Процедура ВводНового(ПризнакКопирования)
    
    ВСтатус = глПроцедураДокумента("ВводНового", глПараметры(Контекст, ,"ПризнакКопирования", ПризнакКопирования,));
    СтатусВозврата(ВСтатус);
    
    Если ПризнакКопирования = 0 Тогда
    ДатаВвода	  = ДатаДок;
    СпособНачисленияАмортизации = Перечисление.СпособыНачисленияАмортизацииФА.Линейный;
    НачислятьАмортизацию	 = 1;
    СобственныйФА		    = 1;
    ВидОперацииНадОбъектом   = Перечисление.ТипыОперацийПриемкиПередачиФА.ВводНовогоОбъекта;
    КонецЕсли;
    
    КонецПроцедуры
    а вот теперь что тут поменять?
    Код:
    Процедура Сформировать()		  
    //Создаем ОЛЕ подключение к Excel
    Excel = СоздатьОбъект("Excel.Application"); 
    
    //Открываем файл
    Excel.Workbooks.Open("C:\Users\user\Desktop\осн средства - копия");
    
    //Открываем активную книгу
    Книга = Excel.ActiveWorkbook;
    
    //Получааем количество строк в книге
    Строк = Excel.Cells.CurrentRegion.Rows.Count;
    
    
    
    //Перебираем строки и обрабатываем данные
    
    //Для х = 1 По Строк Цикл
    Док = СоздатьОбъект("Документ.ПриемкаПередачаФиксированныхАктивов");
    Док.Новый();
    // Док.РеквизитьТакойТо=ПеременнаяСякая; //заполняем шапку
    
    Док.НоваяСтрока(); //табличная часть
    Док.Наименование=СокрЛП(Строка(Excel.Cells(1, 2).Value));
    Док.НачальнаяСтоимость=Число(Excel.Cells(1, 5).Value);
    Док.ДатаВвода= ТекущаяДата();
    Док.ВидНоменклатуры="Фиксированный актив";
    Док.Записать();
    // КонецЦикла;
    
    
    Excel.Workbooks.Close();
    КонецПроцедуры
  8. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Все разобрался, спасибо Вам :clap1:
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не за что. Обращайтесь
  10. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    вот ошибка:
    Код:
     Док.ВидНоменклатуры= Справочник.ВидНоменклатуры.ТипНоменклатуры.НайтиПоКоду(00000006);
    ошибка:
    Док.ВидНоменклатуры= Справочник<<?>>.ВидНоменклатуры.ТипНоменклатуры.НайтиПоКоду(00000006);
    {C:\USERS\USER\DESKTOP\ИМПОРТ\ЗАГРУЗКАПОСТУПЛЕНИЯИЗЕКСЕЛЯ.ERT(28)}: Переменная не определена (Справочник)

    как быть?
  11. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Как правильно обратиться к справочнику?
    Пишу:
    Код:
    Форма.Организация = Справочники.Организации.ПолноеНаименование.НайтиПоНаименованию("АФ РГКП "ЦСМ"МЗ РК",0,0);
    и выходит ошибка:
    Форма.Организация = Справочники<<?>>.Организации.ПолноеНаименование.НайтиПоНаименованию("АФ РГКП "ЦСМ"МЗ РК",0,0);
    {C:\USERS\USER\DESKTOP\ИМПОРТ\ЗАГРУЗКАПОСТУПЛЕНИЯИЗЕКСЕЛЯ.ERT(28)}: Переменная не определена (Справочники)
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    Спр=СоздатьОбъект("Справочник.ТакойТо");
    Организация=Спр.НайтиПоНаименованию("БабаЯгаВТылуВрага"); //не нужно "форма"
    
  13. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    делаю так:
    Код:
     Спр=СоздатьОбъект("Справочник.Организации");
    Если Спр.НайтиПоКоду(00000002,)=1 Тогда
    Сообщить("Найденный элемент: "+Спр.ТекущийЭлемент());
    Иначе Сообщить("На найдено по коду");
    КонецЕсли;
    Организация = Спр;
    сообщение: На найдено по коду

    и поле "организация" на форме пустое...
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Попробуйте представление кода в виде строки (что скорее всего)
    Код:
    Если Спр.НайтиПоКоду("00000002",)=1 Тогда
  15. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    так он ошибок не дал, но на форме по прежнему не вышел(наименование организации)...
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Нужно передавать ссылку на объект...
    т.е. Нужно

    Код:
    Организация = Спр.ТекущийЭлемент();
  17. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    так тоже пробовал,не помогло...

    Код:
    Спр=СоздатьОбъект("Справочник.Организации");
    Если Спр.НайтиПоКоду("00000002",0)=1 Тогда
    Сообщить("Найденный элемент: "+Спр.ТекущийЭлемент());
    Иначе Сообщить("Не найдено по коду");
    КонецЕсли;
    Организация = Спр.ТекущийЭлемент();
    не помогает
  18. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    2 Варианта
    • Тип реквизита формы Организация не является типом "справочник.Организации"
    • в модуле объявлена одноименная переменная
      Код:
      Перем Организация;
  19. TopicStarter Overlay
    Z-bob
    Offline

    Z-bob Опытный в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    1. а как узнать тип?
    2. только в Справочник.Номенклатура и Справочник.Материалы объявлена...

    +2 я просто в глобальном поиске искал
  20. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    реквизит-ПКМ-Свойства-закладка тип
Похожие темы
  1. Je.veux
    Ответов:
    6
    Просмотров:
    487
Загрузка...

Поделиться этой страницей