В связи с повальной легализацией (ПО) пришлось переписать обработки выгрузки из Excel в 1С под Open Office... И вот решил выложить обработку пример импорта из OpenOffice.org Calc в 1С.
Прошу строго не судить, так как пример обработки и некоторые комментарии взяты с диска ITS при демонстрации примера работы с Excel.
В этом случае Ты обращаешься к самой процедуре....
В случае когда
Новый Действие("КнопкаНажатие")
Ты присваиваешь конкретной кнопке, командной панели, конкретное действие программно....
1С Синтаксис - помошник
Цитата
Действие (Action) Конструкторы: На основании процедуры
Описание: Предназначен для получения действия, которое можно назначить в качестве обработчика события элемента управления или команды пользовательского интерфейса. Для обработки события может быть вызвана процедура или функция модуля формы, модуля приложения или общего модуля, имя которой задано в конструкторе. Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения. Сериализуется. Пример: // В модуле описана процедура Сформировать(), выполнение которой // назначим кнопке "Сформировать" в качестве действия при нажатии ОбработкаНажатия = Новый Действие("Сформировать"); КнопкаСформировать = ЭлементыФормы.КнопкаСформировать; КнопкаСформировать.УстановитьДействие("Нажатие", ОбработкаНажатия);
Dim oSM 'Root object for accessing OpenOffice from VB Dim oDesk, oDoc As Object 'First objects from the API Dim arg() 'Ignore it for the moment !
'Instanciate OOo : this line is mandatory with VB for OOo API Set oSM = CreateObject("com.sun.star.ServiceManager") 'Create the first and most important service Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
'Create a new doc Set oDoc = oDesk.loadComponentFromURL("private:factory/swriter", "_blank", 0, arg()) 'Close the doc oDoc.Close (True) Set oDoc = Nothing
'Open an existing doc (pay attention to the syntax for first argument) Set oDoc = oDesk.loadComponentFromURL("file:///c:/dev/ooo/test.doc", "_blank", 0, arg()) 'Save the doc Call oDoc.storeToURL("file:///c:/dev/ooo/test2.sxw", arg()) 'Close the doc oDoc.Close (True) Set oDoc = Nothing
ВЫБРАТЬ Состав.Номенклатура, ПартииОстатки.КоличествоОстаток ИЗ (ВЫБРАТЬ РасходнаяНакладнаяРасход.Ссылка КАК Ссылка, РасходнаяНакладнаяРасход.Номенклатура КАК Номенклатура, СУММА(РасходнаяНакладнаяРасход.Количество) КАК Количество ИЗ Документ.РасходнаяНакладная.Расход КАК РасходнаяНакладнаяРасход
СГРУППИРОВАТЬ ПО РасходнаяНакладнаяРасход.Ссылка, РасходнаяНакладнаяРасход.Номенклатура) КАК Состав ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Партии.Остатки( , Номенклатура В (ВЫБРАТЬ РасходнаяНакладнаяРасход.Номенклатура ИЗ Документ.РасходнаяНакладная.Расход КАК РасходнаяНакладнаяРасход ГДЕ РасходнаяНакладнаяРасход.Ссылка = &Документ)) КАК ПартииОстатки ПО Состав.Номенклатура = ПартииОстатки.Номенклатура ГДЕ Состав.Ссылка = &Документ И (ПартииОстатки.КоличествоОстаток < Состав.Количество ИЛИ ПартииОстатки.КоличествоОстаток ЕСТЬ NULL )
"Еще один момент в документе может оказаться несколько строчек с одинаковым товаром. Тогда переделаем запрос" эта цитата с диска ИТС
ВЫБРАТЬ РасходнаяНакладнаяРасход.Номенклатура, ПартииОстатки.КоличествоОстаток ИЗ Документ.РасходнаяНакладная.Расход КАК РасходнаяНакладнаяРасход ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Партии.Остатки( , Номенклатура В (ВЫБРАТЬ РасходнаяНакладнаяРасход.Номенклатура ИЗ Документ.РасходнаяНакладная.Расход КАК РасходнаяНакладнаяРасход ГДЕ РасходнаяНакладнаяРасход.Ссылка = &Документ)) КАК ПартииОстатки ПО РасходнаяНакладнаяРасход.Номенклатура = ПартииОстатки.Номенклатура ГДЕ РасходнаяНакладнаяРасход.Ссылка = &Документ И (ПартииОстатки.КоличествоОстаток < РасходнаяНакладнаяРасход.Количество ИЛИ ПартииОстатки.КоличествоОстаток ЕСТЬ NULL )
Вот запрос который проверит твои остатки по регистру Партии
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!