idw
05.04.16
✎
11:17
Можно ли программно объединить несколько word’ских файла?
Мимохожий Однако
05.04.16
✎
11:18
Наверняка
DDwe
05.04.16
✎
11:23
(0) Объединяйте, пожалуйста. Никто не возражает.
idw
05.04.16
✎
11:29
Как?
Мимохожий Однако
05.04.16
✎
11:30
(3)Открой учебник по офису
idw
05.04.16
✎
11:32
(4) в учебнике по офису написано как в 1С склеить два файла ворда?
DDwe
05.04.16
✎
11:33
(5) Ты не поверишь )
Мэс33
05.04.16
✎
11:40
(0) file3.doc = file1.doc + file2.doc;
Шутка.
Мэс33
05.04.16
✎
11:42
(0) открываешь файл.
Делаешь выделить все и копируешь в новый файл.
Со вторым файлом также.
Мэс33
05.04.16
✎
11:44
Возможно, надо посмотреть команды (выдернул из макроса):
Selection.WholeStory
Selection.Copy
Selection.PasteAndFormat (wdUseDestinationStylesRecovery)
DDwe
05.04.16
✎
11:44
(8) «программно объединить» — где программа?
idw
05.04.16
✎
11:46
(10) 1С пойдет
Рэйв
05.04.16
✎
11:54
(0)макросом пишется так:
Selection.InsertFile FileName:=»1.doc», Range:=»», ConfirmConversions:= _
False, Link:=False, Attachment:=False
Адаптируй в 1С:-)
Мэс33
05.04.16
✎
12:01
(12) так не интересно. Давай полное законченное решение )
Рэйв
05.04.16
✎
12:03
(13)полное и законченное стоит полый кошелек денюх:-)
Мэс33
05.04.16
✎
12:04
(14) ах ты жадный 1Сник )))
Рэйв
05.04.16
✎
12:07
(15)Надо же поддерживать имидж программиста 1С!
Еще вот поднатужусь и стану тупым и ленивым!:-)
Мэс33
05.04.16
✎
12:07
EvilMacros = «Sub SuperMacros()
|Selection.InsertFile FileName:=»file1.docx», _
|Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
|Selection.InsertFile FileName:=»file2.docx», _
|Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
|Selection.InsertFile FileName:=»file3.docx», _
|Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
|Selection.InsertFile FileName:=»file4.docx», _
|Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
|End Sub»;
Word = Новый COMОбъект(«Word.Application»);
Word.Documents.Add();
VBComponents = Word.ActiveDocument.VBProject.VBComponents;
Count = VBComponents.Count();
VBComponents.Add(1);
VBComponents.Item(Count + 1).CodeModule.I_nsertLines(1, EvilMacros);
Word.Application.Run(SuperMacros»);
Word.Quit();
Word = Неопределено;
Рэйв
05.04.16
✎
12:08
(17)Ты все испортил!!!(С)
Мэс33
05.04.16
✎
12:10
(18) и не говори ))
idw
05.04.16
✎
12:30
(17) спасибо. Попробую.
Хочу из 1С в один файл объединить несколько таблиц с разной ориентацией.
b_ru
05.04.16
✎
12:32
(17) Извращение. Мало кто программный доступ к проекту ВБА разрешает.
idw
05.04.16
✎
12:38
(21) ага.
{Форма.Форма.Форма(446)}: Ошибка при получении значения атрибута контекста (VBProject)
VBComponents = Word.ActiveDocument.VBProject.VBComponents;
по причине:
Произошла исключительная ситуация (Microsoft Word): Отсутствует доверие к программируемому доступу к проекту Visual
Мэс33
05.04.16
✎
12:44
(22) ну да разрешить )))
а иначе — юзайте MS Word Merge Tool. Но он платный.
b_ru
05.04.16
✎
12:57
(23) написать по-человечески тот же макрос не варик?
Word = Новый COMОбъект(«Word.Application»);
Word.Documents.Add();
Word.ActiveDocument.Selection.InsertFile FileName:=»file1.docx», _
Word.ActiveDocument.Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
Word.ActiveDocument.Selection.InsertFile FileName:=»file2.docx», _
Word.ActiveDocument.Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
Word.ActiveDocument.Selection.InsertFile FileName:=»file3.docx», _
Word.ActiveDocument.Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
Word.ActiveDocument.Selection.InsertFile FileName:=»file4.docx», _
Word.ActiveDocument.Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
Word.Quit();
Word = Неопределено;
и я даже не говорю о том, что сам по себе макрос не особо хороший, хотя рабочий.
Мэс33
05.04.16
✎
12:58
(24) может и варик ).
Мой вариант был симбиозом двух рецептов )
b_ru
05.04.16
✎
12:59
точнее
Word = Новый COMОбъект(«Word.Application»);
Word.Documents.Add();
Word.ActiveDocument.Selection.InsertFile(«file1.docx», «», False, False, False)
Word.ActiveDocument.Selection.InsertFile(«file2.docx», «», False, False, False)
Word.Quit();
Word = Неопределено;
Мэс33
05.04.16
✎
13:01
(26) то-то я думаю, что за странный синтаксис:
Word.ActiveDocument.Selection
Word.ActiveDocument.Range
idw
05.04.16
✎
13:16
(26) не работает что-то метод Selection
тут
Word.ActiveDocument.Selection.InsertFile(«file1.docx», «», False, False, False):
Метод объекта не обнаружен (Selection)
idw
05.04.16
✎
13:29
Так работает:
MSWord = Новый COMОбъект(«Word.Application»);
Документ = MSWord.Application.Documents.Add();
//Документ.Activate();
MSWord.Application.Selection.InsertFile(«W:\ТабДок1.docx»,,, Ложь);
MSWord.Application.Selection.InsertFile(«W:\ТабДок4.docx»,,, Ложь);
MSWord.Application.Visible = Истина;
MSWord.Activate();
idw
05.04.16
✎
13:42
Только при объединении двух вордовских файлов не сохраняется их ориентация:
1-й стоит Портрет,
2-й — Ландшафт.
Выводит все листы в портретной ориентации.
Fish
05.04.16
✎
13:43
(30) Разрыв раздела вставляй.
idw
05.04.16
✎
14:05
(31) разрыв страницы макросом делается так:
Selection.InsertBreak Type:=wdPageBreak
а в 1С как сделать?
Пробую так:
MSWord.Application.Selection.InsertBreak.Type=7;
выдает ошибку «Поле объекта не обнаружено (InsertBreak)»
Fish
05.04.16
✎
14:19
(32) А так? MSWord.Application.Selection.InsertBreak(7)
Только 7 — это вроде разрыв страницы, а тебе нужен разрыв раздела wdSectionBreakNextPage.
Fish
05.04.16
✎
14:21
(33) Вместо 7 это 2 .
idw
05.04.16
✎
14:23
(33) (34) да так работает, спасибо. Но ориентацию ставит всё равно одну, первую (портрет).
Fish
05.04.16
✎
14:24
(35) Потому что надо разрыв раздела ставить (может я с номером параметра ошибся). В ворде в разных разделах может быть разная ориентация, а на разных страницах одного раздела — нет.
idw
05.04.16
✎
14:25
(36) я так делал:
MSWord.Application.Selection.InsertBreak(2)
idw
05.04.16
✎
14:25
MSWord = Новый COMОбъект(«Word.Application»);
Документ = MSWord.Application.Documents.Add();
MSWord.Application.Selection.InsertFile(«W:\ТабДок1.docx»,,, Ложь);
MSWord.Application.Selection.InsertBreak(2);
MSWord.Application.Selection.InsertFile(«W:\ТабДок5.docx»,,, Ложь);
Fish
05.04.16
✎
14:33
(38) Да, проверил. InsertFile — просто вставляет текст из файла без сохранения ориентации. Может там параметры какие есть, навскидку попробовал параметры ConfirmConversions.
Fish
05.04.16
✎
14:33
+(39) Не помогло.
idw
05.04.16
✎
14:39
Сделал так: нажал запись макроса, выделил раздел, нажал кнопку параметры и установил ориентацию, получил такой макрос:
Sub Макрос1()
‘
‘ Макрос1 Макрос
‘
‘
With Selection.PageSetup
.LineNumbering.Active = False
.Orientation = wdOrientLandscape
.TopMargin = CentimetersToPoints(3)
.BottomMargin = CentimetersToPoints(1.5)
.LeftMargin = CentimetersToPoints(2)
.RightMargin = CentimetersToPoints(2)
.Gutter = CentimetersToPoints(0)
.HeaderDistance = CentimetersToPoints(1.25)
.FooterDistance = CentimetersToPoints(1.25)
.PageWidth = CentimetersToPoints(29.7)
.PageHeight = CentimetersToPoints(21)
.FirstPageTray = wdPrinterDefaultBin
.OtherPagesTray = wdPrinterDefaultBin
.SectionStart = wdSectionNewPage
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.VerticalAlignment = wdAlignVerticalTop
.SuppressEndnotes = False
.MirrorMargins = False
.TwoPagesOnOne = False
.BookFoldPrinting = False
.BookFoldRevPrinting = False
.BookFoldPrintingSheets = 1
.GutterPos = wdGutterPosLeft
End With
End Sub
Как вот его переделать для 1С вот в чем вопрос.
Fish
05.04.16
✎
14:40
(40) А вот если из файла 2 копипастить (Ctrl+A, Сtrl+С) и вставлять в новый раздел файла 1, то ориентация тоже копируется
idw
05.04.16
✎
14:44
Ура заработало:
MSWord.Application.Selection.PageSetup.Orientation = 1;
Fish
05.04.16
✎
14:48
(43) Ну если ты заранее знаешь, в каком файле какая ориентация — то пойдёт. А иначе придётся извращаться. Или если в добавляемом файле будет несколько разделов с разной ориентацией.
b_ru
05.04.16
✎
14:48
(41) Да хз в чем там вопрос. Объктная модель у ворда такая:
Application (окно приложений с конпками меню, вобщем сам ворд)
v
ActiveDocument (текущий открытый документ ворда)
v
Range (область в документе. Свойство Selection возвращает Range, который выделил пользователь, ессно при работе с COM Selection лучше не пользоваться, а использовать непосредственно Range).
Еще у Document есть коллекции Paragraphs (абзацы) и Words (отдельные слова). Элементы этих коллекций тоже имеют свойство Range.
idw
05.04.16
✎
14:52
(44) да это известно.
idw
05.04.16
✎
15:00
Еще проблема:
листы, у которых ориентация ландшафт широкие и при сохранении в ворд, получаю ошибку:
«Ошибка экспорта табличного документа: Превышена допустимая ширина документа Word 2007»
А ворде параметр — «по ширине листа не рабоает» FitToPagesWide
idw
05.04.16
✎
16:12
В экселе это не сделаешь, нет метода InsertFile.
Остается выравнивать по вертикале, если не влазит, то ставить верикальный разделитель.
Всё это делать с помощью методов ПроверитьПрисоединение() и ВывестиВертикальныйРазделительСтраниц().
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
Можно ли программно объединить несколько word’ских файла?
Объединяйте, пожалуйста. Никто не возражает.
в учебнике по офису написано как в 1С склеить два файла ворда?
открываешь файл. Делаешь выделить все и копируешь в новый файл. Со вторым файлом также.
Возможно, надо посмотреть команды (выдернул из макроса): Selection.WholeStory Selection.Copy Selection.PasteAndFormat (wdUseDestinationStylesRecovery)
«программно объединить» — где программа?
так не интересно. Давай полное законченное решение )
полное и законченное стоит полый кошелек денюх:-)
Надо же поддерживать имидж программиста 1С! Еще вот поднатужусь и стану тупым и ленивым!:-)
Ты все испортил!!!(С)
спасибо. Попробую. Хочу из 1С в один файл объединить несколько таблиц с разной ориентацией.
Извращение. Мало кто программный доступ к проекту ВБА разрешает.
ага. {Форма.Форма.Форма}: Ошибка при получении значения атрибута контекста (VBProject) VBComponents = Word.ActiveDocument.VBProject.VBComponents; по причине: Произошла исключительная ситуация (Microsoft Word): Отсутствует доверие к программируемому доступу к проекту Visual
ну да разрешить ))) а иначе — юзайте MS Word Merge Tool. Но он платный.
написать по-человечески тот же макрос не варик? и я даже не говорю о том, что сам по себе макрос не особо хороший, хотя рабочий.
может и варик ). Мой вариант был симбиозом двух рецептов )
то-то я думаю, что за странный синтаксис: Word.ActiveDocument.Selection Word.ActiveDocument.Range
не работает что-то метод Selection тут Word.ActiveDocument.Selection.InsertFile(«file1.docx», «», False, False, False): Метод объекта не обнаружен (Selection)
Только при объединении двух вордовских файлов не сохраняется их ориентация: 1-й стоит Портрет, 2-й — Ландшафт. Выводит все листы в портретной ориентации.
разрыв страницы макросом делается так: а в 1С как сделать? Пробую так: MSWord.Application.Selection.InsertBreak.Type=7; выдает ошибку «Поле объекта не обнаружено (InsertBreak)»
А так? MSWord.Application.Selection.InsertBreak Только 7 — это вроде разрыв страницы, а тебе нужен разрыв раздела wdSectionBreakNextPage.
да так работает, спасибо. Но ориентацию ставит всё равно одну, первую (портрет).
Потому что надо разрыв раздела ставить (может я с номером параметра ошибся). В ворде в разных разделах может быть разная ориентация, а на разных страницах одного раздела — нет.
я так делал: MSWord.Application.Selection.InsertBreak
Да, проверил. InsertFile — просто вставляет текст из файла без сохранения ориентации. Может там параметры какие есть, навскидку попробовал параметры ConfirmConversions.
Сделал так: нажал запись макроса, выделил раздел, нажал кнопку параметры и установил ориентацию, получил такой макрос: ‘ Как вот его переделать для 1С вот в чем вопрос.
А вот если из файла 2 копипастить (Ctrl+A, Сtrl+С) и вставлять в новый раздел файла 1, то ориентация тоже копируется
Ну если ты заранее знаешь, в каком файле какая ориентация — то пойдёт. А иначе придётся извращаться. Или если в добавляемом файле будет несколько разделов с разной ориентацией.
Да хз в чем там вопрос. Объктная модель у ворда такая: Application (окно приложений с конпками меню, вобщем сам ворд) v ActiveDocument (текущий открытый документ ворда) v Range (область в документе. Свойство Selection возвращает Range, который выделил пользователь, ессно при работе с COM Selection лучше не пользоваться, а использовать непосредственно Range). Еще у Document есть коллекции Paragraphs (абзацы) и Words (отдельные слова). Элементы этих коллекций тоже имеют свойство Range.
Еще проблема: листы, у которых ориентация ландшафт широкие и при сохранении в ворд, получаю ошибку: «Ошибка экспорта табличного документа: Превышена допустимая ширина документа Word 2007» А ворде параметр — «по ширине листа не рабоает» FitToPagesWide
В экселе это не сделаешь, нет метода InsertFile. Остается выравнивать по вертикале, если не влазит, то ставить верикальный разделитель. Всё это делать с помощью методов ПроверитьПрисоединение и ВывестиВертикальныйРазделительСтраниц.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов |
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху; |
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись. |
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Михаил80
Дата регистрации: 31.01.2012
Сообщений: 3
«Ну подскажите как исправить ошибку?<br>{Документ.ИК_БезвозмездноеПолучение.Форма.ФормаДокумента(300)} : Ошибка при установке значения атрибута контекста (Видимость)<br>ЭлементыФормы.ОсновныеСредства.Колонки.АмортизационнаяГруппа.Видимость= ВестиПоАналитике;<br>по причине: Несоответствие типов»
ZhAmAn
Дата регистрации: 23.12.2010
Сообщений: 1333
«Яблоко=Апельсин;<br>Вот что у вас,а должно быть яблоко=истина;»
Михаил80
Дата регистрации: 31.01.2012
Сообщений: 3
«И где ошибка?<br> <br>Процедура ДоступностьЭлементов()<br> Если ПоступлениеМЗ Тогда<br> ЭлементыФормы.Панель1.Страницы.МатериальныеЗапасы.Видимость = Истина;<br> ЭлементыФормы.Панель1.Страницы.ОсновныеСредства.Видимость = Ложь;<br> Иначе<br> ЭлементыФормы.Панель1.Страницы.МатериальныеЗапасы.Видимость = Ложь;<br> ЭлементыФормы.Панель1.Страницы.ОсновныеСредства.Видимость = Истина;<br> Если УчетНПА Тогда<br> ЭлементыФормы.ОсновныеСредства.Колонки.ГрупповойУчет.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.АмортизационнаяГруппа.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КодПоОКОФ.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СуммаАмортизации.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетАмортизации.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаАмортизации.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаЗатрат.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.НачислятьАмортизацию.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ОстСрокПолезногоИспользования.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ПорядокПогашенияСтоимости.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СпособНачисленияАмортизации.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СрокПолезногоИспользования.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетУчетаЗатрат.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат2.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат3.Видимость = Ложь;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат4.Видимость = Ложь;<br> Иначе<br> ЭлементыФормы.ОсновныеСредства.Колонки.ГрупповойУчет.Видимость = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.АмортизационнаяГруппа.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КодПоОКОФ.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СрокПолезногоИспользования.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СуммаАмортизации.Видимость = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетАмортизации.Видимость = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаАмортизации.Видимость = Истина;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ОстСрокПолезногоИспользования.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ПорядокПогашенияСтоимости.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СпособНачисленияАмортизации.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.НачислятьАмортизацию.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СчетУчетаЗатрат.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.КОСГУСчетаЗатрат.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат2.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат3.Видимость = НачислятьАмортизациюКазны;<br> ЭлементыФормы.ОсновныеСредства.Колонки.СубконтоСчетаЗатрат4.Видимость = НачислятьАмортизациюКазны;<br> КонецЕсли;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ДатаВводаВЭксплуатацию.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ФактическийСрокЭкспл.Видимость = ВестиПоАналитике;<br> ЭлементыФормы.ОсновныеСредства.Колонки.ИнвНомер.Видимость = ВестиПоАналитике;<br> КонецЕсли;»
ZhAmAn
Дата регистрации: 23.12.2010
Сообщений: 1333
Что такое ВестиПоАналитике?отладчиком смотрел что там?
Михаил80
Дата регистрации: 31.01.2012
Сообщений: 3
к счету добовляется аналитика, так как у счета может быть несколько аналитик. Скорей всего чтото в праметрах аналитики. Например для 01 счета справочник сотрудников может быть подключен как аналитика, но называться он будет материально ответственное лицо.
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
ZhAmAn
Дата регистрации: 23.12.2010
Сообщений: 1333
я знаю что такое аналитика,конкретно скажи что за переменная!
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
А что это за документ такой «ИК_БезвозмездноеПолучение» и откуда он взялся в БП?
ZhAmAn
Дата регистрации: 23.12.2010
Сообщений: 1333
Показывать по
10
20
40
сообщений
Heltarion 2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
||||
1 |
||||
02.12.2011, 11:18. Показов 8369. Ответов 11 Метки нет (Все метки)
Добрый день! ТПП — «табличное поле правил», в ней уже занесены некотрые значения из XML Код процедуры:
__________________ 0 |
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
02.12.2011, 11:32 |
2 |
СохранитьНажатие(Элемент) это событие формы 1 |
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
02.12.2011, 11:56 [ТС] |
3 |
СохранитьНажатие(Элемент) это событие формы В МодулеОбъекта создал функцию «Процедура СохранитьВЭксель(ТПП) Экспорт» 0 |
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
02.12.2011, 12:10 |
4 |
процедуру ИнициализацияЭкселя() тоже закинь в модуль объекта 1 |
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
02.12.2011, 12:19 [ТС] |
5 |
Да я именно так и сделал, просто забыл упомянуть, ТПП нужна в противном случае он не понимает что это за переменная Добавлено через 4 минуты Так работает, но если я поставлю Дело в том что «стр.НоменклатураБазы» — это справочник ссылка, если у нее текстовый тип то программа глотает и записывает. 0 |
19 / 18 / 1 Регистрация: 15.11.2011 Сообщений: 54 |
|
02.12.2011, 12:22 |
6 |
чет вы мудрено делаете. 1 |
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
02.12.2011, 12:28 [ТС] |
7 |
В данный момент ему не нравится присваемое значение к ячейке экселя (если я правильно понимаю сообщение «Ошибка при установке значения атрибута контекста (Value)» ) Причем если тип значения строка, то он его получает без вопросо, если тип значения СправочникССсылка, то он руегается на «Ошибка при установке значения атрибута контекста (Value)». Я просто не понимаю как обратиться к такому типу переменных чтобы получить значение типа строка. 0 |
19 / 18 / 1 Регистрация: 15.11.2011 Сообщений: 54 |
|
02.12.2011, 12:30 |
8 |
а принудительно все значения в текст перевести нельзя? 1 |
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
02.12.2011, 12:30 |
9 |
стр.НоменклатураБазы.Наименование например 1 |
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
02.12.2011, 12:32 [ТС] |
10 |
стр.НоменклатураБазы — это уже есть наименование интересующего меня поля (имя столбца), в некотрых случаях можно писать: стр.НоменклатураБазы.Значение, но это нетот случай Добавлено через 56 секунд 0 |
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
02.12.2011, 12:34 |
11 |
значение из Excel? 1 |
Heltarion 2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
||||
02.12.2011, 12:43 [ТС] |
12 |
|||
Рабочий код:
0 |
Код 1C v 8.3
// Реквизиты
ДобавляемыеРеквизиты = Новый Массив;
ИмяТаблицы = "КомандыДополнительныхОбработок";
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ссылка", Новый ОписаниеТипов("СправочникСсылка.ДополнительныеОтчетыИОбработки"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ВариантЗапуска", Новый ОписаниеТипов("ПеречислениеСсылка.СпособыВызоваДополнительныхОбработок"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИмяЭлемента", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Идентификатор", Новый ОписаниеТипов("Строка"), ИмяТаблицы));
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ЭтоОтчет", Новый ОписаниеТипов("Булево"), ИмяТаблицы));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//реквизит
ИмяЭлемента = "Добавлен" + ИндексЭлемента;
Реквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеТипов);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//команда печать
ИмяКомандыПечать = "ДобавленПечать" + ИндексЭлемента;
КомандаПечать = Команды.Добавить(ИмяКомандыПечать);
КомандаПечать.Действие = "ПечатьДокумента";
КомандаПечать.Подсказка = НСтр("ru = 'Печать документа...'");
//элемент формы
//Родитель = Элементы.ГруппаСформированныеДокументы;
Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементГруппа);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.Гиперссылка = Истина;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ЭтаФорма[ИмяЭлемента] = Документ;
//кнопка печать
ИмяЭлементаПечать = "ДобавленПечать" + ИндексЭлемента;
ЭлементПечать = Элементы.Добавить(ИмяЭлементаПечать, Тип("КнопкаФормы"), ЭлементГруппа);
ЭлементПечать.Картинка = БиблиотекаКартинок.Печать;
ЭлементПечать.Отображение = ОтображениеКнопки.Картинка;
ЭлементПечать.ИмяКоманды = ИмяКомандыПечать;
Ошибка при получении значения атрибута контекста (ТекущийПользователь)
bless18 |
|
||
---|---|---|---|
Ошибка при получении значения атрибута контекста (ТекущийПользователь): Попытка получения неинициализированного значения параметра сеанса
Пользователь = ПараметрыСеанса.ТекущийПользователь; по причине: Попытка получения неинициализированного значения параметра сеансаКод 1C v 8.х
Где происходит их инициализация? |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
Когда в Общие — Параметры сеанса добавил ТекущийПользователь, то его нужно определять при загрузке:
так же в процедуре ПриНачалеРаботыСистемы пишешь что то типо: Код 1C v 8.х
Это работает при условии, что ИмяПользователя заданное в конфигураторе, равно Имени введенному в справочнике Пользователей в реквизит Код |
bless18 |
|
||
---|---|---|---|
А если не совпадают, можно как-нибудб привязать пользователя к сотруднику? |
E_Migachev |
|
||
---|---|---|---|
А лучше добавить процедуру в Модуль сеанса(Правой клавишей щелкаещь на названии конфигурации и выбираешь Открыть модуль сеанса)
В ней создаешь Процедура УстановкаПараметровСеанса () и в ней пишешь код который я предложил выше или так, Если не совпадают: Код 1C v 8.х
Эта процедура вызывается раньше чем ПриНачалеРаботыСистемы. Ну а дальше подставлять сопоставленное значение при создании соответствующего документа: Код 1C v 8.х
События модуля сеанса: |
bless18 |
|
||
---|---|---|---|
Спасибо вам огромное! Вы мне очень помогли! |
bless18 |
|
||
---|---|---|---|
Спасибо вам огромное! Вы мне очень помогли! |
E_Migachev |
|
||
---|---|---|---|
Пожалуйста |
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху) |