def _addFormObjEventStd(self, res_filename_requisite, name_requisite, value): """ Добавить событие в объект формы. Обычная форма. @param res_filename_requisite: Имя файла ресурса формы. @param name_requisite: Имя объекта формы и события в формате <Имя объекта>.<Имя события> @param value: Значение которое необходимо прописать в событии. """ res = iccfresource.icCFResource(res_filename_requisite) res.loadData() name_requisites = name_requisite.split('.') if len(name_requisites) != 2: log.warning( u'Object name_requisite and event name_requisite <%s> not define!' % name_requisites) return obj_name_requisite = util1c.encodeText(name_requisites[0], 'unicode', 'utf-8') evt_name_requisite = util1c.encodeText(name_requisites[1], 'unicode', 'utf-8') value = util1c.encodeText(value, 'unicode', 'utf-8') if evt_name_requisite in self._SupportEventNames: if obj_name_requisite: # Если имя объекта указано, то это объект формы for obj_res in res.data[1][2][2][1:]: if obj_res[4][1] == obj_name_requisite: full_evt_name_requisite = obj_name_requisite + evt_name_requisite res_evt_name_requisites = [ evt[2][1] for evt in obj_res[2][4][1:] ] if full_evt_name_requisite not in res_evt_name_requisites: evt_template = self._createFormObjEventResStd( full_evt_name_requisite, value, self._evtID[evt_name_requisite]) obj_res[2][4].append(evt_template) # Увеличить счетчик событий формы obj_res[2][4][0] += 1 break else: res_evt_name_requisites = [ evt[2][1] for evt in res.data[4][1:] ] if evt_name_requisite not in res_evt_name_requisites: # Если имя объекта не указано, то это сама форма evt_template = self._createFormObjEventResStd( evt_name_requisite, value, self._evtID[evt_name_requisite]) res.data[4].append(evt_template) # Увеличить счетчик событий формы res.data[4][0] += 1 else: log.warning(u'Event \'%s\' not support' % evt_name_requisite) return return res.saveData()
def _addInFormModuleStd(self, mod_filename_requisite, txt): """ Добавить в модуль формы текст. Обычная форма. @param mod_filename_requisite: Имя файла модуля формы. @param txt: Добавляемый текст. @return: True - добавление прошло успешно, False - добавления не произошло. """ prg_txt = util1c.encodeText(txt, 'unicode', 'utf-8') f = None try: f = open(mod_filename_requisite, 'r') txt = f.read() f.close() f = None if prg_txt not in txt: try: f = open(mod_filename_requisite, 'a') f.write(prg_txt) f.close() except: if f: f.close() f = None raise return True except: if f: f.close() f = None raise return False
def delInModule(self, txt): """ Удалить из модуля объекта текст. @param txt: Удаляемый текст. @return: True - удаление прошло успешно, False - удаления не произошло. """ txt = util1c.encodeText(txt) module_filename = os.path.join(self.getCFDir(), self.uid + '.0', 'text') f = None try: f = open(module_filename, 'w') txt = f.read() txt = txt.replace(txt, '') f.write(txt) f.close() return True except: if f: f.close() f = None raise return False
def getUnicodeName(self): """ Имя объекта в представлении Unicode. """ if isinstance(self.name, unicode): return self.name else: return util1c.encodeText(str(self.name), 'utf-8', 'unicode')
def _updateInFormModuleStd(self, mod_filename_requisite, txt, *args, **kwargs): """ Заменить текст всех процедур и функций. @param mod_filename_requisite: Имя файла модуля формы. @param txt: Заменяемый текст. @return: True - замена прошла успешно, False - замена не произошла. """ txt = util1c.encodeText(txt, 'unicode', 'utf-8') f = None try: f = open(mod_filename_requisite, 'r') mod_txt = f.read() f.close() f = None except: if f: f.close() f = None raise # Обновить блоки процедур/функций mod_blocks = self._splitModuleProcBlock(mod_txt) update_blocks = self._splitModuleProcBlock(txt) for update_block in update_blocks: if update_block[0]: is_add = True for i, mod_block in enumerate(mod_blocks): if update_block[0] == mod_block[0]: # Заменить блок mod_blocks[i] = update_block is_add = False break # Если такой процедуры нет в тексте модуля, то добавить ее if is_add: mod_blocks = self._appendInModuleBlocks( mod_blocks, update_block) # Собрать текст модуля из обновленных блоков mod_txt = '' for mod_block in mod_blocks: mod_txt += mod_block[1] + '\n' mod_txt = mod_txt.replace('\r\n', '\n').replace('\n', '\r\n') try: f = open(mod_filename_requisite, 'w') f.write(mod_txt) f.close() f = None except: if f: f.close() f = None raise return True
def _addFormObjEventCtrl(self, res_filename_requisite, name_requisite, value): """ Добавить событие в объект формы. Управляемая форма. @param res_filename_requisite: Имя файла ресурса формы. @param name_requisite: Имя объекта формы и события в формате <Имя объекта>.<Имя события> @param value: Значение которое необходимо прописать в событии. """ res = iccfresource.icCFResource(res_filename_requisite) res.loadData() name_requisites = name_requisite.split('.') if len(name_requisites) != 2: log.warning( u'Object name_requisite and event name_requisite <%s> not define!' % name_requisites) return obj_name_requisite = util1c.encodeText(name_requisites[0], 'unicode', 'utf-8') evt_name_requisite = util1c.encodeText(name_requisites[1], 'unicode', 'utf-8') obj_idx = self._findObjResIdx(res.data, obj_name_requisite) if evt_name_requisite == 'ПередНачаломДобавления': if obj_idx: evt_idx = (1, 27, 73) evt_res = res.getByIdxList(evt_idx) if evt_res == [0]: # Если событие не определено evt_template = copy.deepcopy( CTRL_BEFORE_ADD_START_EVENT_TEMPLATE) evt_template[-1] = util1c.encodeText( value, 'unicode', 'utf-8') res.data[1][27][73] = evt_template else: log.warning(u'Event \'%s\' not support' % evt_name_requisite) return return res.saveData()
def _addInFormModuleCtrl(self, res_filename_requisite, txt): """ Добавить в модуль формы текст. Управляемая форма. @param res_filename_requisite: Имя файла ресурса формы. @param txt: Добавляемый текст. @return: True - добавление прошло успешно, False - добавления не произошло. """ res = iccfresource.icCFResource(res_filename_requisite) res.loadData() txt = util1c.encodeText(txt, 'unicode', 'utf-8') if txt not in res.data[2]: prg_txt = res.data[2] + txt res.data[2] = prg_txt return res.saveData()
def addInModule(self, txt): """ Добавить в модуль объекта текст. @param txt: Добавляемый текст. @return: True - добавление прошло успешно, False - добавления не произошло. """ txt = util1c.encodeText(txt) module_filename = os.path.join(self.getCFDir(), self.uid + '.0', 'text') if not os.path.exists(module_filename): return f = None try: f = open(module_filename, 'r') txt = f.read() f.close() f = None if txt not in txt: try: f = open(module_filename, 'a') f.write(txt) f.close() except: if f: f.close() f = None raise return True except: if f: f.close() f = None raise return False